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]