Acme::Kensiroで「あたたたたたたたたたたたああたたたたたたたたたたたたたたたたた」と言わせたい
Acme::Kensiroモジュールをつかって、あた・・・・・・・・と叫ばせようと おもって、以下のようにつかってみた。test.pl
use strict; use warnings; use Acme::Kensiro; print kensiro(1600);
でも、引数に設定できるのは、255までなんです。
$ perl test.pl Character in 'C' format wrapped in pack at /usr/lib/perl5/site_perl/5.14/Acme/Kensiro.pm line 14. あたたたたたた
ソースを呼んでみると packという関数を用いて、8ビットの値をバイナリにして、2進数に変換しています。
package Acme::Kensiro; use strict; use warnings; use Exporter 'import'; our @EXPORT = 'kensiro'; our $VERSION = '0.14'; use 5.008001; sub kensiro { my $src = shift; my $dst = unpack("B8", pack("C", $src)); $dst =~ s/^0*(.+)/$1/; $dst =~ s/0/た/g; $dst =~ s/1/あ/g; return $dst; } 1; __END__
そこでソースをローカルディレクトリにもってきて
$ perldoc -l Acme::Kensiro /usr/lib/perl5/site_perl/5.14/Acme/Kensiro.pm $ mkdir -p ./lib/Acme $ cp /usr/lib/perl5/site_perl/5.14/Acme/Kensiro.pm ./lib/Acme
下記のように修正して
package Acme::Kensiro; use strict; use warnings; use Exporter 'import'; our @EXPORT = 'kensiro'; our $VERSION = '0.14'; use 5.008001; sub kensiro { my $src = shift; my $dst = unpack("B32", pack("L", $src)); $dst =~ s/^0*(.+)/$1/; $dst =~ s/0/た/g; $dst =~ s/1/あ/g; return $dst; } 1; __END__
今度は、こんな感じにうまく実行できました!
$ perl -Ilib test.pl あたたたたたたたたたたたああたたたたたたたたたたたたたたたたた
取り込んでもらうように、報告しなきゃ。