人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PerlのBenchmarkモジュールへプライベート変数の内容を手際よく渡せないでしょうか。

例えば
Windows-XP-prompt>perl -MBenchmark -e "{my $m=1;timethis(10,'&f($m,2)');}sub f{print join ' ',@_[0,1],'';}"
において、Benchmark::timethisなどに渡すコードはプライベート変数を覗くことができないようなので、ベンチマーク中に出力ファイルハンドルへ吐きだされる文字列が 2 2 2 ... となるのは理解できます。

プライベート変数の内容を使うコードをテストしたい場合は、
Windows-XP-prompt>perl -MBenchmark -e "{my $m=1;our @o=($m,2);timethis(10,'&f(@o)');}sub f{print join ' ',@_[0,1],'';}"
のように、timethisを呼び出す直前にour宣言などしたグローバル変数を介してコードに内容を渡すのが、一番考えられる方法でしょうか。

しかしこれは正直、手際が悪いと感じるので、もっと手際のいい方法を欲しています。

●質問者: imo758
●カテゴリ:コンピュータ
✍キーワード:Perl print sub Windows XP
○ 状態 :終了
└ 回答数 : 3/4件

▽最新の回答へ

1 ● Craftworks
●80ポイント

timethis() はコードリファレンスを渡せますよ。

perl -MBenchmark -e "my \$m=1;timethis(10, sub {print join ' ',\$m,2,'';})"


1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 timethis 10: 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)

◎質問者からの返答

syntax error at -e line 1, near "my \"

Execution of -e aborted due to compilation errors.

と怒られてしまったのですが。


2 ● brandbaidu
●0ポイント

(はてなにより削除しました)


3 ● とまと
●0ポイント

最初の回答者さんの提案イイと思いますよ

(#^o^#)/~~~~~

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ