On 3/8/06, Eugeny Altshuler <[EMAIL PROTECTED]> wrote:
snip
> local $/; # to slurp the file at once
> my $joined=<>;
snip
>  What '\s*=\s*(["']).*?\1' mean?

Be careful with the setting of $/.  In small scripts like this one it
is not very dangerous, but in larger scripts in can cause all manner
of bugs if not properly localized:

my $joined;
{
    local $/ = undef;
    $joined = <>;
}

or better yet, don't use slurp mode at all:

my $joined = join '', <>;

s,STYLE\s*=\s*([" ']).*?\1,,igs; means

replace in the entire string ignoring newlines as many times as it
appears in a case insensitive manner "STYLE" followed by zero or more
whitespace characters followed by  "=" followed by zero or more
whitespace characters followed by either ' or " followed by zero or
more characters (non-greedy) followed by the matching ' or " with
nothing

I would have written it like this

s{ #replace
    STYLE #the word "style" (case insensitive)
    \s*   #followed by zero or more whitespace characters
    =     #followed by the equal sign
    \s*   #followed by  zero or more whitespace characters
    ("|') #followed by a quote (either " or ', remember the type)
    .*?   #followed by the shortest number of characters
    \1    #followed by the match quote from above
}{ #with
          #nothing
}igsx;

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to