意外と知られていないperlテクってのが、意外とあるもんですね。
最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。
こういうトリビア的なのはなかなか面白いなあと思ったので便乗させて頂きました。
Re: ランダムシャッフル
続いてこれもソートねた。
これは List::Util::shuffle の方がベターでしょう。*1
% perl use List::Util; print join ' ', List::Util::shuffle qw( 0 1 2 3 4 5 6 7 8 9 ); print "\n"; 1 8 6 3 0 2 7 5 9 4
Re: perlとだけ叩いたら
そんなあなたは、まずコンソールに向かって「perl」とだけ打ってリターンしてみてください。
ちなみに、perlrunを読めば書いてますが、 "perl -" とすると、コマンドライン引数も渡せます。
% perl - hoge print @ARGV, "\n"; hoge
Re: モジュールの格納場所をしる
%INCにはそのプログラムでロードしているモジュールのパスがハッシュとして格納されています。
さらに、 $0 は実行中のコマンド、 __FILE__ はこのシンボルが書かれているファイルのPATHに展開されます。
% cat foo.pl require 'hage.pl'; % cat hage.pl print $0, "\n"; print __FILE__, "\n"; % perl foo.pl foo.pl hage.pl
Re: モジュールのメソッドを上書きする
わざわざ継承するのも大げさっていうような場合は思い切ってそのクラスの当該メソッドを再定義してしまいましょう!
事前にundefすると、 no warnings 'redefine' しなくとも警告は出ません。
use strict; use warnings; sub do_something { ... } undef &do_something; *do_something = sub { print "Implemented.\n" }; do_something;
*1:sortの中の関数は全順序関係である必要があるので、 rand を使うのは誤っており、動くのはたまたまと言ってもいいでしょう。