perl
マスタリングPerl作者: brian d foy,菅野良二出版社/メーカー: オライリージャパン発売日: 2009/03/23メディア: 大型本購入: 3人 クリック: 23回この商品を含むブログ (14件) を見る 内容(「BOOK」データベースより) 本書は、Perl構文の基本を指南する『初…
PBPに見習って/msxを常につけるようにしてるんだけど、先頭が"#"の場合はコメントなconfigを読み込んで処理しようとして while (my $line = <$fh>) { next if $line =~ m/^#/msx; } としたら全部の行がregexにマッチして何も処理しなくなってた。おや〜と悩…
chroot用のユーザに環境を用意するときに、個々のバイナリファイルをコピーするよりbusybox使うほうが楽かなと思ってやったメモ。static-linkなbusyboxだと/lib以下のライブラリコピーしなくていいし。 $ busybox --help BusyBox v1.01 (2006.05.04-09:21+00…
/mあたりを良く忘れるのでmemo。 /i 大文字小文字を無視 /m 複数行マッチモード。^と$を改行の前後でマッチさせる。/m修飾子が有効な状態で本当に文字列の先頭と末尾にマッチさせたい場合は、\Aと\Z\zを使う。 /s "."を改行にマッチさせる。 /x 空白を無視。…
auのBREWの端末のIPは通常のezwebがアクセスしてくる帯域とは違うことを最近知った。 http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html http://www.kddi.com/business/otoiawase_support/support/tec/index.html で、BREWアプリのサイトのapacheに…
dsasの中の人が作ったperlで、SoftbankのIPだけが取得できなくなったので調べてみた。どうやらSoftbankのIP帯域が載ってるURLが変わったのが原因で、Net::CIDR::MobileJP::Scraper::Plugin::Vodafone.pmが古いままだかららしい。適当に修正したら動くように…
ファイルは異なるパーティション間でも移動できたけど、ディレクトリはダメだった。perldoc File::Copyしても、それらしい記述は見つけられなかったんだけどどうなんだろ。 パーティションの状態 /rootと/tmpが/dev/md0、/var/は/dev/md3。 # df -k Filesyst…
エロblogから画像 or 動画をdownloadするscriptを書けばいいわけですね http://d.hatena.ne.jp/naoya/20070509/1178686816 http://e8y.net/mag/013-web-scraper/ http://blog.cles.jp/item/2003
http://techtalk.jp/2008/08/-tech-meeting.html Linuxカーネルの読み方 - 伊藤直也‐ニコニコ動画(夏) を見てApp::Ackの存在を知った。確かに便利そうだ。 cpan -i App::Ackするとackというコマンドがインストールされる。 でも色つけるだけなら、(GNUの)grep…
use bigintしてるのに有効数字が小さいから、なんで?と思って調べた。範囲演算子が文字列を返してるからなのかな。 範囲演算子 use bigint; for my $n (16..20) { print $n ** $n, "\n"; } 実行結果 1.84467440737096e+19 8.27240261886337e+20 3.934640807…
$ perl -le 'print 2 ** 100' 1.26765060022823e+30 整数 bigint or bignumプラグマ Math::BigIntのwrapper。 use bigint; print 2 ** 100, "\n"; # => 1267650600228229401496703205376 Math::BigIntモジュール use Math::BigInt; print 2 ** 100, "\n"; # …
project eulerの8問目を見てて、ふと疑問に思った。この場合、まず数値列(文字列)から全ての5桁の数字を取ってきたいとする。簡単にするために、20桁の数値列で考える。 $str = '0123456789' x 2; while ($str =~ m/(\d{5})/g) { print $1, "\n"; } これだと…
文字列から数字だけ抜き出したいときとか ex) "123foo456bar789baz000"から123,456,789,000をとりたい/g修飾子を使ってマッチさせる。思いついた方法は2つ。 まとめて取得(リストコンテキスト) $str = "123foo456bar789baz000"; @arr = $str =~ m/(\d+)/; 1…
ちゃんと調べてないから良くわかってないけど。source installしたものじゃなくて、標準packageで入ってるperl。そのままだとsetuidしたものは動かせない? # echo '#!/usr/bin/perl' > suid.pl # echo 'print "hello\n"' >> suid.pl # chmod u+s suid.pl # …
Net::Pingみたいな名前のモジュール使うのかな?そんなのあるの?と思ってたら標準モジュールにあった。 system関数でpingを呼び出すのが許されるのは小学生まで?
コンパイルエラーが出るこんちくしょう。どうやら5.8.0は古すぎてダメみたい。 http://www.mail-archive.com/libwww@perl.org/msg06423.html Parser.xsにパッチ当てたら良いらしい。
何かいい語呂合わせとかないもんですかね。logの抽出のために年月日を取得することは良くするので、さすがにそれらの配列の位置ぐらいは覚えましたけど。 my ($day,$mon,$year) = (localtime(time))[3,4,5]; ## 指摘を受けたので追加 $day = sprintf("%02d",…
use Time::HiRes を使えばよいらしい。
コマンドプロンプトでちょっとバージョン確認したいときに $ perl -MEncode -le "print $Encode::VERSION" いちいちこんなの打つのめんどくせー。 どうやら関数を作るほうがよさそうだ。ってことで.bashrcあたりに書いた。 function cpanv (){ perl -M$1 -le…
不思議に思ってたのは俺だけかもしれませんが。 forループで大きいファイルを処理しようとすると、全行読み込んでtemporaryのリストを作るので、ファイルサイズの2倍ぐらいのメモリを食ってしまう。なのでforじゃなくてwhileのほうが良いってのは知ってまし…
apacheで名前ベースのVirtualHost設定したときとかにperlあたりで楽に確認する方法ないかなーと思ってた。さすがにいちいちtelnetするのは古臭い。ってか面倒。 $ telnet example.com 80 GET / HTTP/1.1 host: vhost1.example.com たぶん一番てっとり早いの…
かすかな記憶を頼りにやったmemo。 o confでpopとpush使う。 ex) urllistを編集する # cpan > o conf # 設定一覧表示 > o conf urllist # urllistの一覧表示 > o conf urllist pop # urllistの末尾を削除 > o conf urllist push http://cpanmirror.example.c…
初級メモ。 サブルーチンを他のファイルに書く 読みこむときはrequireを使う。# hogelib.pl sub hello { print "hogehoge\n"; } # main require 'hogelib.pl'; &hello; package化 上の方法だと、複数のライブラリを読み込んだときに、関数名が重複してしまっ…
system関数でコマンド実行させて、失敗したらdieをさせようとして、 system "command" or die; って書いてしまってた。何もエラー起きてないのに、何でdieしとんねん!!と30分ほど悩んでしまった。system関数の戻り値は"command"の戻り値、unix系ではコマン…
YAPC::Asia 2007 Tokyo - April 4-5 2007 (Japanese) http://tokyo2007.yapcasia.org/blog/ja/ 「お前最近perlの勉強してるし、こういうの行ってみたら?」と先輩に言われ、中身も良く知らないまま二つ返事で行くことに(ノ∀`) 勉強してると言っても"初めての…
続・初めてのPerl⇒無印という明らかに逆の読み方してますが。一から真面目に勉強したいなーと思ったので。初めてのPerl作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪出版社/メーカー: オライリージャパン発売日: …
追記 インストールはCPAN経由ではなくsubversionのほうが良い。最新版がすぐ手に入るから。 plaggerインストール編 数ヶ月前に挑戦しようとしたときはCPANのCの字も知らなかったので、インストールの時点でドン詰まりでしたが、今はモジュールのインストール…
ハッシュ使わなかったら(アルゴリズムが変わるってのも大きいけど) めちゃめちゃ早くなった。ハッシュ最高。
dbmopen(%hash,"filename",$mode) $modeのところにundefを指定したらいいらしい
exists関数 exists($hash{$key}) $keyに対応する値があれば真を返して、なければ偽を返す。へー。 でもdbmファイルからオープンしたハッシュには使えなかった*1。二日間かけて作ったプログラムを根底から覆しかねない事件。しゃーないので、ださい方法で回避…