in reply to Re^2: Use global flag when declaring regular expressions with qr?
in thread Use global flag when declaring regular expressions with qr?

Some operations can be shortened even further. It is up to the reader to decide if that increases or decreases maintainability :)

sub match_url { my $row = shift; # No @_ required, that is the default my @matches = ($row =~ m/$re/g) or return; # do something with @matches } if (!@ARGV or $ARGV[0] eq "-") { chomp (@ARGV = <STDIN>); # chomp can be done in one go match_url ($_) for @ARGV; # Your match_url takes one arg, not a li +st } else { # Do I need to handle the error case with this syntax? while (<>) { chomp $_; # Is chomp really needed? match_url probably ignores + trailing EOL in $re match_url ($_); } }

for vs while

($str =~ m/$re/g) (note the parens) returns all matches in one list

use 5.012003; use warnings; my $str = "abacadabra"; my $rex = qr{(a\w)}; say "-- say"; say for ($str =~ m/$rex/g); say "-- while"; while ($str =~ m/$rex/g) { say $1; } -> -- say ab ac ad ab -- while ab ac ad ab

Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^4: Use global flag when declaring regular expressions with qr?
by ysth (Canon) on Oct 29, 2024 at 13:12 UTC
    (note the parens) ... say for ($str =~ m/$rex/g);
    The parens in the for? Those do absolutely nothing.
    --
    A math joke: r = | |csc(θ)|+|sec(θ)| |-| |csc(θ)|-|sec(θ)| |

      Old habits die hard: every time I expect a m/(.).(.(.)/ or m/(.)/g to return a list that I want to keep, I add parens

      I don't know what hit me in the past to come to that habit


      Enjoy, Have FUN! H.Merijn
Re^4: Use global flag when declaring regular expressions with qr?
by Anonymous Monk on Oct 29, 2024 at 15:42 UTC
    It is up to the reader to decide if that increases or decreases maintainability :)

    On the one hand, I really like how there are so many similarities with shell scripting, in terms of syntax at least. On the other, it's a bit confusing to keep track of so many implicit behaviors. I was always told to be explicit whenever possible as it makes code easier to reason about. I'm afraid to forget what variables like @_ do if I don't use them often enough! :D

    Thanks for the tips!