App::cpanminusって? CPANをもっと簡単に使える様にするperlモジュール。 参照: http://yellowstore.blogspot.com/2010/04/perlperlercpanminus.html インストール # cpan App::cpanminus または、 cpan> install App::cpanminus 2010-12-16追記 他のインストール方法(CPANを設定しなくてもインストール出来る) perlモジュールのinstallにcpanmを使う|perl|@OMAKASE $ mkdir bin && cd ~/bi […]
srand()の引数は10桁まで? Perlでsrand()を使って乱数シードを与えて固定の乱数を得たい時に、11桁以上を渡すと乱数が固定されてしまう。 どうやら制限(上限?)があるようだ。 調べた結果 4294967294 までは乱数が取得出来るっぽい。+1の4294967295以上になると固定値になってしまう。 2011-01-13追記 どうやら32bitの制限のようですね。 32ビット - Wikipedia 32ビットに格納できる整数の範囲は、0 から 4,294,967,295 である。
普通の変数をハッシュの様に使ってみる 変数…例えば、$name に値を代入する。 $name='abc'; この変数の内容を表示するには単純に print $name; とすればよいわけですが、この変数名 'name' を別の変数に格納して表示するには以下の様にする事も出来ます。 $name='abc'; $hensu='name'; print ${$hensu}; 実行結果 abc 利用方法としては配列などに変数名を格納しておいて、splitした各変数を表示する時に使えるかな? @hensu = ('id','name','tel'); $data='1,Taro,03-111-2222' […]
Perlモジュール Business::PayPal::API PayPalのAPIを使う時は Business::PayPal::API というモジュールが便利。 先日のエントリー PayPal利用時の決済フローを考える でLandingPageオプションの事を書いたのですが、Business::PayPal::API で実装するとそのままでは利用出来ないので、Business::PayPal::API::ExpressCheckout のソースを変更する必要があります。 PayPalの英語版APIの解説書(PDF)にはLandingPageの記載が無いようでしたので日本独自の仕様なのでしょ […]
はてなの質問で気になったものを発見。 ファイルの書き込み速度を向上させる方法。 perlで一度に複数のファイルを書き出すプログラムを作っていますが、openで書き出しています。 ファイルの数が増えるとやはり徐々に完了まで時間がかかってきますが、ファイルを書き出す際の速度向上にはどのようなものがあるでしょうか。 ハードウェアの交換等以外でお願い致します。 http://q.hatena.ne.jp/1125455948 この回答にディスクの書き込みによけいなものを排除するというものがあった。 http://www.itmedia.co.jp/help/tips/linux/l0298.html […]
たまに使う配列のシャッフル。 コピペで使えると便利なので。 sub shuffle { my @list; push( @list, splice(@_, int(rand(@_))) ) while(@_); return @list; } 使い方 my @data = (1,2,3,4,5); @data = shuffle(@data); 参考:http://sonic64.com/2004-11-13.html こちらもどうぞ:perl の配列処理で 標準モジュール List::Util を使う理由
以下の順でインストールするとうまくいくらしい。 Math::BigInt Math::BigInt::GMP Crypt::DH Net::OpenID::Consumer Net::OpenID::Consumerをインストール時にXML::Simpleが足りなかったので先にインストールした。 参考:http://www.atmarkit.co.jp/fsecurity/rensai/openid03/openid01.html 関連: Net::OpenID::Consumer::Lite http://d.hatena.ne.jp/tokuhirom/20081129/122792323 […]
LWP::SimpleはUserAgentを指定出来ないという文書が多いけどどうやら指定出来るらしい。 use LWP::Simple qw/:DEFAULT $ua/; $ua->agent('My UserAgent'); これでLWP::UserAgentまでもない場面でUserAgentが必要なときにも安心。 参考:LWP::Simple で UserAgent を変更する
system関数やパイプを使って外部プログラムを実行する時は 汚染チェックを必ずする。 エスケープするべき文字 & ; ` ' \ " | * ? ~ < > ^ ( ) [ ] { } $ \n \r 以下の置き換えで全てをエスケープすると良い。 s/([\&\;\`\'\\\"\|\*\?\~\\^\(\)\[\]\{\}\$\n\r])/\\$1/g; 参考:http://www.stackasterisk.jp/tech/program/perl02_02.jsp
Linuxのコマンド ls -cr `find /tmp -type f` ・find /tmp -type f /tmp 以下のファイル全てを検索 ・ls -cr 更新日時を古い順にソート つまり /tmp 以下のファイルを更新日時が古い順にソートするコマンド。 ちなみに、 ls -c 最後にファイルのステータスを変更した時間でソート ls -t 修正時刻順でソート。 ls -u 最後にファイルにアクセスした時刻でソート perlで使う時は 、 open(IN, "ls -cr `find /tmp -type f` | "); print while(); のように、openの中のコ […]