http://qs321.pair.com?node_id=968976


in reply to split and matching

my @LINES =<IN>;
This reads all the lines, and stuffs them into @LINES.
while(<IN>){
You've already read all the lines! What do you expect to read now?
my @fields = split ';', $_;
I thought you said it was a tab delimited file?

if ( $fields[8] =~ /^[sno]/ =~ /^[sno]/ ) {
What are you trying to do here? If you want to know that there is a value for sno, do something like:
if ($fields[8] =~ /(?:^|;)sno=[^;]/) { ... }
And if you have a string literal, there is really no need to backslash all your spaces (unless it's the literal is a regexp pattern under the /x modifier, and you want the regex engine to see the spaces). Your print statement will be much more readable if you get rid of them.