Are you looking for part of a string or the whole string? If you are looking for the whole string it is better to use eq because a regular expression is slower.
if ( $a eq 'abcdefgh' or $b eq 'abcdefgh' or $c eq 'abcdefgh') { }
Also shorter code does not necessary mean it is easier to read. Taking your code and putting it into a tabular format,
if ( $a =~ /abcdefgh/ || $b =~ /abcdefgh/ || $c =~ /abcdefgh/ || ....... ) { }
One more thing, if you are trying to match the same pattern, put the pattern in a string and match against it. Name the pattern something that will make sense for the program can also enhance readability.
my $USER_NAME = qr{abcdefgh}xms; if ($a =~ $USER_NAME || $b =~ $USER_NAME || $c =~ $USER_NAME) { }
In reply to Re: howto make a very long IF statment shorter
by Herkum
in thread howto make a very long IF statment shorter
by jeanluca
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |