Perl złożony string i qw

0

Dzień dobry

Jak można w Perlu zaznaczyć, że chodzi nam o złożony string w tablicy z użyciem "qw"? Chodzi o to, żeby potraktowało nam np. wyrażenie "light blue" jako 1 string a nie 2 jednocześnie nie rezygnując z użycia "qw".

@colors = qw/green yellow red light blue/;
0

Można to rozwiązać na wiele róznych i ciekawych sposobów.
Podam przykład detekcji kolorów w stringu:

#!/usr/bin/perl 

@defined = ("seledin","orange" ,"purple" ,"green", "yellow", "red", "light blue");
$odstep = "\t";
$colors = 'green yellow red light blue';

foreach $var (@defined){
	print $var;

	if(length $var < 8){
		$odstep = "\t\t";	
	}else{$odstep = "\t";}

	if($colors =~ /$var/){
		print "${odstep} defined\n";
	}else{print "${odstep} not defined\n";}
}
 

wynik w konsoli:

$ ./sk.pl 
seledin		 not defined
orange		 not defined
purple		 not defined
green		 defined
yellow		 defined
red			 defined
light blue	 	 defined
 
0

@Karma dla Kota, uzywaj use strict; i use warnings; w skryptach Perla.

@Piekny Kot, zamiast qw mozesz uzyc czegos takiego:

my $all_colors = <<COLORS;
  green
  yellow
  red
  light blue
COLORS

my @colors = map {s/^ +//; $_} split /\n/, $all_colors;

1 użytkowników online, w tym zalogowanych: 0, gości: 1