Practice of Programming

プログラム とか Linuxとかの話題

Tie::Trace 0.06

同僚のJN氏に、Tie::Traceのワーニングがわかりづらいから、あーしたほうが、こーしたほうが、とか言われて、
変更してみました。そのうちCPANにあがるかと(今、気づいたんだけど、日本語のドキュメント更新し忘れた...orz)。
金曜にはだいたい出来てたはずなのに、いろいろしてたり、前のバグを見付けたり、テスト通らなかったりで、結局、今日かよ、みたいな感じです。

こちらにあります。
http://rwds.net/trac.cgi/file/modules/Tie-Trace/lib/Tie/Trace.pm

で、次のようなscriptを書きます。

#!/usr/bin/perl

package TestPackage;

$| = 1;

use Tie::Trace qw/watch/;
use Data::Dumper;
use strict;

local $Data::Dumper::Terse = 1;
local $Data::Dumper::Indent = 0;

my $test = 1;

watch($test);

$test = 1;

print "  => ", Dumper($test), "\n\n";
undef $test;
print "  => ", Dumper($test), "\n\n";
$test = {};
print "  => ", Dumper($test), "\n\n";
$test->{a} = 1;
print "  => ", Dumper($test), "\n\n";
$test->{b} = ["a" .. "c"];
print "  => ", Dumper($test), "\n\n";
push @{$test->{b}}, 1, 2;
print "  => ", Dumper($test), "\n\n";
shift @{$test->{b}};
print "  => ", Dumper($test), "\n\n";
push @{$test->{b}}, 'a' .. 'f';
print "  => ", Dumper($test), "\n\n";
unshift @{$test->{b}}, 1 .. 5;
print "  => ", Dumper($test), "\n\n";
pop @{$test->{b}};
print "  => ", Dumper($test), "\n\n";
splice @{$test->{b}}, 0, 1, "01", "02", "03";
print "  => ", Dumper($test), "\n\n";
splice @{$test->{b}}, 0, 3, "01";
print "  => ", Dumper($test), "\n\n";
@{$test}{qw/a b/} = ();
print "  => ", Dumper($test), "\n\n";
delete @{$test}{qw/a b/};
print "  => ", Dumper($test), "\n\n";

すると、こんな感じで出力されます。

 TestPackage:: $test => 1 at test/test_script.pl line 19.
   => '1'
 
 TestPackage:: $test => undef at test/test_script.pl line 22.
   => undef
 
 TestPackage:: $test => {} at test/test_script.pl line 24.
   => {}
 
 TestPackage:: $test => {a} => 1 at test/test_script.pl line 26.
   => {'a' => 1}
 
 TestPackage:: $test => {b} => ['a','b','c'] at test/test_script.pl line 28.
   => {'a' => 1,'b' => ['a','b','c']}
 
 TestPackage:: $test => @{{b}} => PUSH(1,2) at lib/Tie/Trace.pm line 395.
   => {'a' => 1,'b' => ['a','b','c','1','2']}
 
 TestPackage:: $test => @{{b}} => SHIFT() at lib/Tie/Trace.pm line 410.
   => {'a' => 1,'b' => ['b','c','1','2']}
 
 TestPackage:: $test => @{{b}} => PUSH('a','b','c','d','e','f') at lib/Tie/Trace.pm line 395.
   => {'a' => 1,'b' => ['b','c','1','2','a','b','c','d','e','f']}
 
 TestPackage:: $test => @{{b}} => UNSHIFT(1,2,3,4,5) at lib/Tie/Trace.pm line 400.
   => {'a' => 1,'b' => ['1','2','3','4','5','b','c','1','2','a','b','c','d','e','f']}
 
 TestPackage:: $test => @{{b}} => POP() at lib/Tie/Trace.pm line 405.
   => {'a' => 1,'b' => ['1','2','3','4','5','b','c','1','2','a','b','c','d','e']}
 
 TestPackage:: $test => {b}[0] => ('01','02','03') at test/test_script.pl line 40.
   => {'a' => 1,'b' => ['01','02','03','2','3','4','5','b','c','1','2','a','b','c','d','e']}
 
 TestPackage:: $test => {b}[0 .. 2] => ('01') at test/test_script.pl line 42.
   => {'a' => 1,'b' => ['01','2','3','4','5','b','c','1','2','a','b','c','d','e']}
 
 TestPackage:: $test => {a} => undef at test/test_script.pl line 44.
 TestPackage:: $test => {b} => undef at test/test_script.pl line 44.
   => {'a' => undef,'b' => undef}
 
 TestPackage:: $test => {a} => DELETED at test/test_script.pl line 46.
 TestPackage:: $test => {b} => DELETED at test/test_script.pl line 46.
   => {}

そうそう、JN氏に、Traceより、Watchじゃね?と言われて、CPAN探してみたら、
Tie::Watchというモジュールを見付けました...orz


ところで、今、実家でして、東京から帰る途中に貴船に行ってきました。はじめて川床に行ってきました。
料理は微妙でした(^^;懐石より、単純なすき焼きのほうが良かったと思う。いや、一品だけ食うとかの方が全然...。
まぁ、お店によるのかもしれませんがね。


写真は、川床でTie::Traceのプログラミングをしている風景です。画面に写ってる黄色い丸は提灯です。


プログラミングするには、涼しくていいです。
Kansai.pmあたりで、川床プログラミングオフしたらいいんじゃないかと(ぇ


そういや、貴船で、Smalltalkの和名と出会いました(違
http://kibune.or.jp/smalltalk/