Note this will fail if your code ever passed arguments to a sub without using parentheses, like &print "a", "list", "of", "stuff". I'm sure there are other possible scenarios where this might fail, but maybe this can be a starting point.use strict; use warnings; local $/ = ";\n"; # Assumes each statement is followed by a newline! while (<DATA>){ s/((?> & \w+ \s*)) # Match ampersand, followed by subname # and optional whitespace. Use atomic # grouping ("?>") so perl won't backtrack # after this matches. ([^(]|$) # Ensure this is followed by a non-open-paren, # or this was the end of the statement. /$1()$2/gx; # If this matched, place () after the sub call. # OP's original substitution to remove "&" s/(&)(\w+(\([\"\w]*\))?)/$2/g; print "$_"; } __DATA__ &somesub; &somesub("foobar") my $foo = &bar(1); my @results = (&foo, &bar, &baz(1, "data")); my $stuff = (&foo, &baz(qw(other information), &data); &print;
In reply to Re: Regex to add text if text is missing
by crashtest
in thread Regex to add text if text is missing
by bradcathey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |