in reply to Named captures or positional variables
It depends a lot on your situation.
If you need to support Perl older than 5.10, then named captures are out. Full stop.
If you're in a tight loop, using positional variables, or assigning the result of the regexp match to a list of variables, will be faster than named captures which use a tied hash.
In the case where you're passing around regexps as part of an API, then named captures seem the best idea. For example, you have a function which accepts a filehandle and a regexp, and does some processing on the file, using the regexp to extract the right data.
sub process_file { my ($fh, $re) = @_; while (<$fh>) { next unless /$re/; # do stuff with captured data } }
Here named captures make a lot more sense because they give the caller a lot more flexibility. If you have something like:
my $account_number = $1; my $deposit_amount = $2;
... then it ties the input format so that the deposit amount can never be in the first column, before the account number. Named captures don't suffer from that.
|
|---|