If this is what you want to do then you could do any of these:
for my $i ( 0..11 ) { print "yes it's a month\n" if $month eq $monthnames[$i]; } for my $valid_months ( @monthnames ) { print "yes it's a month\n" if $month eq $valid_months; } print "Yes it's a month\n" if grep { $_ eq $month } @monthnames;
You would be better to use a hash as a lookup table like this:
my @months = qw( jan feb mar apr may jun jul aug sep oct nov dec); my %monthnames; # create lookup table $monthnames{$_}++ for @months; print "Yes it's a month!" if exists $monthnames{$month};
In your if($month = $array[i]){ statement you have used = which is the assignment operator when what you really wanted was eq the string equality operator. In perl we have:
$a = 1; # set $a to 1 $a == 1; # returns a true value if $a is numerically equal to 1 $a eq 'foo' # returns a true value if $a is equal to the string value + 'foo'
Using = when you mean == or eq can be very confusing. The assignmet will always succeed so the conditional statement is generally also always true so you have a nasty bug that not only fails to work as expected but also modifies your data. You also need to make sure you use eq rather than == when you want a string comparison:
cheersprint "What, a string is numerically == 0?" if 'foo' == 0;
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: Re: Re: creating an array of names
by tachyon
in thread creating an array of names
by bdawg613
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |