On Wednesday, August 13, 2003 10:45, [EMAIL PROTECTED] wrote: >I've been reading the previous post and was wondering about what qr does in
>this code. > >use strict; > use warnings; > > my @array = ( > qr'^to: myprog'mi, > qr'^from: [EMAIL PROTECTED]'mi > ); > > my $str = 'To: myprog with trailing text'; > > foreach (@array) { > print "found\n" if $str =~ $_ > } >From "perldoc -q perlop" qr/STRING/imosx This operator quotes (and possibly compiles) its STRING as a regular expression. STRING is interpolated the same way as PATTERN in m/PATTERN/. If ``''' is used as the delimiter, no interpolation is done. Returns a Perl value which may be used instead of the corresponding /STRING/imosx expression. For example, $rex = qr/my.STRING/is; s/$rex/foo/; is equivalent to s/my.STRING/foo/is; In your case, that means for the first array item, the line translates to: print "found\n" if $str =~ '^to: myprog'mi Which could also be written as print "found\n" if $str =~ /^to: myprog/mi It prints "found=n" if $str starts with "to: myprog". The 'm' modifier says to treat the string as multiple lines, and the 'i' modifier says to ignore case. For the second array item, the line translates to: print "found\n" if $str =~ '^from: [EMAIL PROTECTED]'mi Which could also be written as print "found\n" if $str =~ /^from: [EMAIL PROTECTED]/mi It prints "found=n" if $str starts with "from: [EMAIL PROTECTED]". Same notes on the modifiers. HTH, Alan -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]