use strict; use warnings; use FindBin; use lib ( "$FindBin::Bin/../lib", "$FindBin::Bin/../local/lib/perl5", ); use MyProj::Client; my $client = MyProj::Client->new(...); ...
use strict; use warnings; use File::Spec; use File::Basename 'dirname'; use lib ( File::Spec->catdir(dirname(__FILE__), qw/.. lib/), File::Spec->catdir(dirname(__FILE__), qw/.. local lib perl5/), ); use MyProj::Client; my $client = MyProj::Client->new(...); ...
This is perl 5, version 24, subversion 0 (v5.24.0) built for darwin-2level (with 1 registered patch, see perl -V for more detail)
Copyright 1987-2016, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
use strict; use warnings; use Benchmark ':all'; use Test::More;
## 処理対象となる配列 my @list = (0 .. 10000);
## 各パターンの定義
#- 配列でforを回してpushするタイプ my $for_array_push = sub { my @result; for my $row (@list) { push @result, "num=".$row; } return @result; };
#- 配列インデックスでforを回して直接インデックス指定して代入するタイプ。 my $for_array_index = sub { my @result; for my $i (0 .. $#list) { $result[$i] = "num=".$list[$i]; } return @result; };
#- Cスタイルのforで直接インデックス指定して代入するタイプ。 my $for_cstyle_index = sub { my @result; for (my $i=0; $i<=$#list; $i++) { $result[$i] = "num=".$list[$i]; } return @result; };
#- forを使わないでmapで写像を得るタイプ my $mapping = sub { return map { "num=".$_ } @list; };
ただ注意して欲しいのは、配列を全件処理するだけ(つまり別の配列を作らない)場合にmapを使うことは、可読性という面では好ましくないと考えます(ループ処理だけしたいのか、加工された配列が欲しいのか判断がつかない)。そういうケースでは for my $row (@list) {...} のやり方のほうが意図が読み取りやすいですね。