Perlで実行した行を出力するDevel::Trace
Perlで実行した行を出力するDevel::Traceの使い方です。
1.はじめに
PerlではDevel::Traceを利用することで、実行した行を標準出力に出力することができます。
また、Devel::Trace::Moreを利用することでファイルに出力することもできます。
各モジュールはcpanmなどでインストールしてください。
ここではWindowsでの動作結果を用いていますが、Linuxでも同じと思います。
2.実行した行を標準出力する
実行した行を標準出力するには、shebang行に-「-d:Trace」を追加します。
test.pl
#!/usr/bin/perl -d:Trace
use strict;
my $a = 10;
my $b;
for ( my $i=0; $i<10; $i++ ) {
$b++;
}
実行すれば次のように出力されます。
C:\>test.pl
>> C:\test.pl:5: my $a = 10;
>> C:\test.pl:6: my $b;
>> C:\test.pl:8: for ( my $i=0; $i<10; $i++ ) {
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
>> C:\test.pl:9: $b++;
shebang行ではなく、perlのオプションに「-d:Trace」を付与しても同じ結果になるようですが、こちらの環境での実験では確認できておりません。
C:\>test.pl -d:Trace
3.ファイルに出力する
2項を、
c:\>test.pl > /tmp/result.txt
とリダイレクトしても、結果がファイルに出力されない場合があるようです。
ということで、ファイルに出力するにはDevel::Trace::Moreを利用してみます。
#!/usr/bin/perl -d:Trace::More
use strict;
Devel::Trace::More::output_to('/tmp/result.txt');
my $a = 10;
my $b;
for ( my $i=0; $i<10; $i++ ) {
$b++;
}
これを実行すれば2項と同じ実行結果がファイルに出力されます。
output_to()は出力が開始する一番先頭に付与する必要があるようです。
4.インデントが分るかようにする
下記の記事の改変を行えば、出力結果にネストをつけることもできます。
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
トラックバックURL
コメントする
greeting