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)