Skip to content

Instantly share code, notes, and snippets.

@azumakuniyuki
Created May 8, 2022 05:56
Show Gist options
  • Save azumakuniyuki/036fc2662cafbb395ea68d12632b867a to your computer and use it in GitHub Desktop.
Save azumakuniyuki/036fc2662cafbb395ea68d12632b867a to your computer and use it in GitHub Desktop.
Use $+{'neko'} instead of $1
#!/usr/bin/env perl
# Captured $1 vs. ${^MATCH}
use strict;
use warnings;
use Benchmark ':all';
use Test::More 'no_plan';
my $q = 'neko-nyaan-cat';
sub doller {
my $v = shift;
$v =~ /\A([a-z]+)[-].+[-]([a-z]+)\z/;
return $1.'-'.$2;
}
sub namedc {
my $v = shift;
$v =~ /\A(?<neko1>[a-z]+)[-].+[-](?<neko3>[a-z]+)\z/;
return $+{'neko1'}.'-'.$+{'neko3'};
}
is doller($q), 'neko-cat';
is namedc($q), 'neko-cat';
printf("Running with Perl %s on %s\n%s\n", $^V, $^O, '-' x 80);
cmpthese(6e6, {
'=~ $1, $2' => sub { doller($q) },
'(?<neko>)' => sub { namedc($q) },
}
);
__END__
Running with Perl v5.30.0 on darwin
--------------------------------------------------------------------------------
Rate (?<neko>) =~ $1, $2
(?<neko>) 412088/s -- -48%
=~ $1, $2 791557/s 92% --
Running with Perl v5.32.0 on darwin
--------------------------------------------------------------------------------
Rate (?<neko>) =~ $1, $2
(?<neko>) 413508/s -- -49%
=~ $1, $2 810811/s 96% --
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment