autodieを試す

// local::lib 使って入れるとしようと・・・しまったモジュール古いんで入らないんだった
// 仕方ないのでPERL5LIBに直接追加する方法でやる
$ perldoc -l local::lib
No documentation found for "local::lib".

// 取得
$ wget http://search.cpan.org/CPAN/authors/id/P/PJ/PJF/autodie-2.10.tar.gz
$ tar xzvf autodie-2.10.tar.gz
$ cd autodie-2.10
$ perl Makefile.PL PREFIX=$HOME/perl
$ make
cp lib/Fatal.pm blib/lib/Fatal.pm
cp lib/autodie/exception.pm blib/lib/autodie/exception.pm
cp lib/autodie/hints.pm blib/lib/autodie/hints.pm
cp lib/autodie.pm blib/lib/autodie.pm
cp lib/autodie/exception/system.pm blib/lib/autodie/exception/system.pm
Manifying blib/man3/Fatal.3pm
Manifying blib/man3/autodie::exception.3pm
Manifying blib/man3/autodie::hints.3pm
Manifying blib/man3/autodie::exception::system.3pm
Manifying blib/man3/autodie.3pm
$ cd ~/perl/
$ find . -type f
./share/man/man3/autodie::exception.3pm
./share/man/man3/autodie.3pm
./share/man/man3/autodie::exception::system.3pm
./share/man/man3/Fatal.3pm
./share/man/man3/autodie::hints.3pm
./lib/perl5/5.8.8/Fatal.pm
./lib/perl5/5.8.8/i386-linux-thread-multi/auto/autodie/.packlist
./lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
./lib/perl5/5.8.8/autodie.pm
./lib/perl5/5.8.8/autodie/hints.pm
./lib/perl5/5.8.8/autodie/exception/system.pm
./lib/perl5/5.8.8/autodie/exception.pm

$ export PERL5LIB=$HOME/perl/lib/perl5/5.8.8/
$ perldoc -l autodie
    • サンプル
use strict;
use warnings;
#use autodie; # ①コメントアウトなし ②コメントアウト

print "unlink1\n";
unlink "/tmp/aaaaa";

print "unlink2\n";
unlink "/tmp/aaa" or die "$!";
    • 実行結果① no use autodie
unlink1
unlink2
そのようなファイルやディレクトリはありません at a.pl line 10.
    • 実行結果② use autodie
unlink1
Can't unlink('/tmp/aaaaa'): そのようなファイルやディレクトリはありません at a.pl line 7
  • 追記
    • というか5.10標準モジュールって書いてあった…(これはubuntuで実行)
$ perldoc -l autodie
/usr/share/perl/5.10/autodie.pm
 perl-5.10.1-106.el6.i686.rpm                                              28-Mar-2010 00:16  9.9M  
 perl-5.10.1-106.el6.x86_64.rpm                                            28-Mar-2010 00:15   10M