Perlで処理時間を計測

Perlで処理時間を計測する方法にはいろいろあるのでしょうが、とりあえず下記のプログラムでできそうです。秒数を計算しているので、精度を変更したり、結果表示を変更したい場合は、微調整が必要です。

$ cat time.pl 
#!/usr/bin/perl

my $startTime = time;
my $time1 = localtime(time);
print $time1;
print "\n";
my $time2 = localtime(time);
print $time2;
print "\n";

sleep 3;
my $stopTime = time;
print $stopTime - $startTime;
print "\n";

MTOS create blog

Perlでプログラミング。ブログをコマンドラインプログラムから新規作成する方法がなかなかわからなかったのですが、とりあえずできました。意外と面倒ですが、まぁ、仕方がないのでしょう。Webインタフェース経由で投げていくという方法もありそうなのですが、とりあえずは、コマンドライン方式で。

やりたい内容については、Perlで簡単にできるものはPerl、Javaを使った方が簡単にできるものはJava、シェルスクリプトで全体の処理を流すという方式にしようかと考え中です。1つに絞って開発した方が良さそうな気もしますが、つなげた方がトータル的に楽そうです。とは、メンテナンス性は非常に悪そうです。プラグイン方式も考えてはみたものの、今のところ見通しがたっていないので、採用しないつもりです。

世の中、便利になってきているけど、ちょっと枠からはずれたことをしようとすると、相変わらず苦労が多いですね。当たり前ですが。

コマンド引数

Perlでは、コマンド引数が@ARGVという変数に入ります。

#!/usr/bin/perl

# 引数の配列
print "\@ARGV:";
print @ARGV;

# 配列の最大インデックス数値(配列数-1)
print "\n$#ARGV:";
print $#ARGV;

# 最初の引数
print "\n$ARGV[0]:";
print $ARGV[0];

# 最後の引数
print "\n$ARGV[$#ARGV]:";
print $ARGV[$#ARGV];
print "\n";

実行結果は次のようになります。引数を指定しなかった場合と、引数に「hello perl program」を指定した場合を例に挙げています。

$ ./argv.pl 
@ARGV:
-1:-1
:
:

$ ./argv.pl hello perl program
@ARGV:helloperlprogram
2:2
hello:hello
program:program

Perl配列

Perlの配列変数は、@で始まります。添字は0から始まります。

$ cat array.pl
#!/usr/bin/perl
@a = ( ‘Perl’, ‘Java’ ); 
$a[2] = ‘Ruby’;
@a[3..4] = ( ‘Python’, ‘C’ );
print "\@a:";
print @a;
print "\n\$a[0]:";
print $a[0];
print "\n\@a[0..2]:";
print @a[0..2];
print "\n";

実行結果は次の通り

$ ./array.pl 
@a:PerlJavaRubyPythonC
$a[0]:Perl
@a[0..2]:PerlJavaRuby