in reply to howto make a very long IF statment shorter

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) { }