On Jan 11, 2016, at 6:55 PM, ToddAndMargo <toddandma...@zoho.com> wrote:

> Would yo all terribly mind if I ask how to do this Perl 5 regex
> in Perl 6?  (I learn best by example.)

> if ( $ClickLine =~ /aes256/ and /${BaseTag}/ ) {
>              push ( @WebClickHere, $ClickLine );
> 
>               if ( $Line =~ m{select id=\"(.*?)[-]} ) {
>                  my $VerLine = $1;
>                  push ( @WebVersions,  $VerLine );
>               }
>            }
—snip—

I don’t mind; I am happy that you have asked for the way you learn best :^)

You presented three regexes:
1.      $ClickLine =~ /aes256/
        $ClickLine ~~ /aes256/
Where you would use `=~` in Perl 5 to bind to a match or a subst,
you now use the `~~` smartmatch operator in Perl 6.
Yes, it is safe, even though smartmatch has some problems
in Perl 5; this is Perl 6's smartmatch!

2.      /${BaseTag}/
        /$BaseTag/          # Use for simple text
        /<$BaseTag>/        # Use for a full regular expression.
As FROGGS (Tobias Leich) said, the correct translation depends on
whether $BaseTag contains simple text, or should be interpreted as
a regex. Perl 5 always did the latter unless you used quotemeta().

3a.     $Line =~ m{select id=\"(.*?)[-]}
        $Line ~~  / select \s 'id="' (.*?) '-' /
* Space is now significant in Perl 6 regexes. 
* Alphanum are literal text to match, or special if backslashed;
    `n` is just the character `n`, `\n` means `newline` .
* Non-alphanum are special, or literal text to match if backslashed or quoted;
    `+` means `one or more`, while the plus character is written as `\+` or 
`'+'` .
* Note: my translation is not tested.

3b.     my $VerLine = $1;
        my $VerLine = $0.Str;      # or ~$0 or $/[0].Str
* The capture vars ($1, $2...) have moved from being 1-based to 0-based; $1 is 
now $0, $2 is now $1, etc.
* Perl 5 capture vars held plain strings. In Perl 6, they hold Match objects, 
and must be stringified to behave like Perl 5.

See also:
    
http://docs.perl6.org/language/5to6-perlvar#Variables_related_to_regular_expressions
    http://docs.perl6.org/type/Match
    https://github.com/Util/Blue_Tiger/blob/master/translate_regex.pl

-- 
Hope this helps,
Bruce Gray (Util on IRC and PerlMonks)


Reply via email to