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
In reply to Re^3: Use global flag when declaring regular expressions with qr?
by Tux
in thread Use global flag when declaring regular expressions with qr?
by unmatched
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |