Perl
Perlうめえ。は、カレントディレクトリからファイルとディレクトリを全て抽出してくれる。 ワンライナーに便利です。 strを含まないファイル名をunlinkする。 for(){unlink if !/str/} 正規表現だと柔軟でいい。逆にstrを含むなら "!" をはずす。 正規表現を…
今まで文字コードを意識しなくても問題なかったんで、Encode.pmってのをあまり使ってなかったんですが、 WEBからコンテンツを拾ってきて、その文字コードを判別して、一意の文字コードに変換しないといけない場面が出てきたので、 Encode.pmとかその辺につい…
eachはハッシュリストからキーと値のペアを返す。 "最後まで取り出す"と、内部でもっている読み出し位置を先頭に戻す。 最初に呼び出した時に、読み出し位置がリセットされるという事ではない。
Perlでちょっとしたデータ読み取りの実装で、ファイルでもメモリ上に展開されたデータでも使える汎用readerがほしくなったので、 オブジェクト指向を使って頑張って書いてみました。
JFIFを消すのはまずいかもしれんので、APP0だけは許容する。 以前にJPEGの仕様を見て、パーサーを作って、HTMLのテーブルをドットに使ってコピペできない画像みたいに出力した事があるので、 JPEGに関してはあまり苦労せずにできたが、バイナリ文字列を数値…
http://perldoc.perl.org/5.10.0/perlguts.htmlより引用 The hash algorithm is defined in the PERL_HASH(hash, key, klen) macro: hash = 0; while (klen--) hash = (hash * 33) + *key++; hash = hash + (hash >> 5); /* after 5.6 */ The last step was …
Perlの組み込み関数であるsortは安定なのか?とふと思い、perldocを引いてみる。
かなり前にオセロみたいなゲームを作ろうと思ったことを思い出して、せっせと作り始める。 そんなわけでPerlでオブジェクト指向っぽくプログラミングをしていたら、 どうしてもcloneっぽい機能がほしくなった。 正しいかわからないけど、cloneっぽく機能する…
perl -e "print 1 perl -M"integer" -e " print 1 前者は1を出力、後者は何も出力されない。 C言語で32bitなint型であれば、1 しかしPerlでは型が厳しく決まっていないので、数値の演算はほとんど浮動小数点演算で行われるらしい。 integerプラグマを使うこ…
唐突にPerlのみでJpegを解析できるようなものを作ろうと思ったわけですが、挫折しそうです。 Jpegでは量子化のために離散コサイン変換(DCT)を行います。 通常の公式をそのまま使うと結構な時間がかかるので最適化を考えます。 参考文献 画像圧縮アルゴリズ…
LWPを使ってGETメソッドでリクエストを送りまくるというプログラムを作りたくなり、 threadsを連続で50個程生成しようとしたら以下のようなエラー。 Free to wrong pool ... not ... at .../XSLoader.pm line -1. 大体30個強のスレッドを作ろうとしたところ…
検証方法 それぞれの関数へハッシュのリファレンスを渡して、処理の早さを見る。 以下の仮名を与えて、それをベンチマーク時のラベルとしている。 h_def: 普通のHash h_tix: Tie::IxHash h_ths: Tie::Hash::Sample(仮)(前回作ったもの)
Tie::Hashっていうモジュールがあって、それを読み込むと、Hashの機能を拡張できる。 その機能拡張に、Hashの追加順を記憶するって事もでき、 Tie::HashのドキュメントやTie::IxHashのコードを参考に、どんなもんか作ってみた。 参考って書いてるけど、ほと…
use LWP::UserAgent; my $ua = LWP::UserAgent->new(agent=>'Mozilla/5.0', timeout=>60); my $re = $ua->post( "対象URL", [name1=>'value1', name2=>'value2'], Referer => "リファラーURL");LWPは手軽で便利。
今日も楽しくPerlをいじっていたら、実行中に、 Invalid value for shared scalar at ... こんなエラー。
ファイルなどの一般的な共有資源に対して排他制御をするときは、flock()もしくは、 use Thread::Semaphore;をしてセマフォを生成する。 スレッド間の共有変数に対して排他制御を掛ける時はlock()。 簡単なlockを使った排他制御を試してみた。
GDとはオープンソースなグラフィックライブラリ。 WindowsのActivePerl上で使うための導入手順。 Linuxなら cpan install GD でよさそう。
threadsに関する事。 間違ってても誰かが指摘してくれる。
forkするよりthreadを使ったほうが便利っぽい。 なぜか。 変数の共有も簡単。排他制御もできる。 forkしてパイプで・・・とか考えなくていいのです。 今日からforkしないでthreadsすることにします。 というわけで、threadsモジュールを触る。 もちろんスー…
仕事でプログラミング言語でコレ使えっていわれるなら別だけど、 慣れた・好きな言語を使うのがいいね。 Perlでforkでモジュールに頼らずに変数共有できないかな、と思って少し考えた事をやってみた。 参照を取ればいけるんじゃね? 参照を取ればその参照の…
Perlを使うとしばしば正規表現を使う。 僕はwhileでマッチング処理をぶん回す時、 while($x=~/(xxx)/cg){ # 〜処理〜 } みたいな使い方をするときがある。
くだらないメモ。
refererを指定しないとはじかれるページからGETしたい時に。 やりかたは、普通にHTTP::Requestのコンストラクタ呼び出しの時に、ヘッダを指定するだけ。 LWP::UserAgent http://homepage3.nifty.com/hippo2000/perltips/LWP/UserAgent.html HTTP::Request ht…
ふと、Linuxのtopコマンドを見ると。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2756 root 20 0 4108 416 300 R 9.7 0.0 14:35.45 diced DiCEがなぜかCPUを食べているので、変わりになるものをperlで書いてみた。
といっても、オブジェクト指向で書いて、DESTROYを呼び出すようにするだけなんですが。server_shutdown_cleanup_registerとかなんかいろいろありますが、 外部モジュールをあまり叩きたくないので、この方法は使わないで、 自分の作ったモジュールだけでどう…
わかったことや、やったことをメモメモ。
とりあえず自作モジュールをuseで読み込めなかった原因がわかった。
急にmod_perlを少し勉強したいと思いました。 使い勝手とか導入のしやすさからSpeedyCGIでいいじゃんって思ってたけど、 なんかのちょっと大きいシステムでPerlを使うときは、 大抵がmod_perlが使われている(Mixi、slashdotとか)し、 SpeedyCGIと違う、良い…
substrを使って、ある一定サイズ(100byte)を超えた文字列を省略するモノを書いた。
ちょっと豆知識的なページをつくりたいけど、 一つ一つをHTMLでページを作るのがだるく感じたため、 どうにかできんもんかなーと思ってたら、Wikiと言うものがありまして。 Wikiってのは、最低限なアプリで、誰でも参照でき、誰でも変更することができ、 記…