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};
Warning
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:
print "What, a string is numerically == 0?" if 'foo' == 0;
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|