Perlでバイナリファイルをいじる場合にいろいろと同じ問題に遭遇するので、忘れないようにメモ。 バイナリファイルの読み込み 読み込む場合に”getc”使うと、ファイルが終わってないのに終了してしまうことがある。 正しくは”read”を使う。 my $filename = $ARGV[0]; open my $file,'<',$filename or die; binmode $file; my $val; while(read($file, $val, 1)){ } これで1byteづつ処理できる。実際はバイナリの構造にあわせてreadするバイト数を変える。 読んだバイナリの処理 バイナリを数値として処理するためには、その構造にあわせてunpackする。 unpack("C",$val); #unsigned byte unpack("S",$val); #unsigned short
Q. awk '{print $9}'とかでUser-Agent丸ごと取り出したい とか思ったことない? Apacheのログ解析で。でもできないじゃない。例えば 192.168.0.1 - - [17/Apr/2014:11:22:33 +0900] "GET /index.html HTTP/1.1" 200 43206 "https://www.google.co.jp/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"
OS X Mavericks 10.9.4でサードパーティ製SSDのTrimを有効にする方法が公開されています。詳細は以下から。 先日 公開されたOS X Mavericks 10.9.4では多数の不具合修正[1, 2, 3]の他に「IOAHCIBlockStorage.kext」も変更されており、さらにOS X Mountain Lion 10.8.3からOS X Mavericks 10.9.3まで使用されてきた「IOAHCIBlockStorage.kext」とではTrimを有効にするパターンが違うため一部ユーザーの間で「Trimが有効にできない[1, 2, 3]」という報告が上がっています。 OS X Mavericks 10.9.4でTrimを有効にする方法 OS X Mavericks 10.9.4でTrimを有効にするScriptは以下の通りで、 #OS X Maverick
「\n」でなく、「¥n」と入力しているからです。 ここらへんはコンピュータの歴史を翻ってみないと理解できません。いまでこそ文字コードに2バイト(Shift-JISなど)、3バイト(utf-8など)を割り当てることができ、数万字にコードをつけられるようになりましたが、草創期のコンピュータは、1バイトつまり256文字のコードしか割り当てられませんでした。もちろん漢字は使えず、日本語の表記は無理です。それではどうしようもないので、欧米語圏でアクセント付き文字が割り振られているコードに、カタカナを割り振ることで、どうにか日本語を表記できるようにしました。いわゆる半角カナと呼ばれるものです。 このように日本独自の文字コードを作ったさい、もともとバックスラッシュ(\)のコードに、円マーク(¥)を割り当てました。バックスラッシュは日常ほとんど使われることがなく、また金銭の計算にコンピュータを使うのに、円
配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)
英語圏ではかなり前からPerlで開発し続けることのリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ。日本でもそう遠くない未来だと思う。 若手エンジニアの不足Objective-Cのように需要が逼迫しているのに人材の供給が増えず需給ミスマッチが起っているわけでは無く、需要も供給も減るという状況下でわずかだが需要が上回っているとう性質の悪い状況がPerlに起きている。特に深刻なのは安価な若手エンジニアの採用が絶望的に難しいという現実だ。Rubyが台頭して数年経ちPythonがメインストリームの先頭を突っ走る2013年において新しくPerlを勉強しようとする若者はよほどの物好きしかいない。30~40歳のPerlエンジニアを雇うのはそれほど難しく無いだろうがコストがかかる。安価な20代前半の若手エンジニアを雇いたいという企業の思いとは裏腹にPerlを新た
[LWP?] 特定のCLASSの値だけ取得したい LWPを使って、特定のWebページを取得しました。 -- use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent("$0/0.1 " . $ua->agent); $req = HTTP::Request->new(GET => 'http://www.yahoo.co.jp/'); $req->header('Accept' => 'text/html'); # リクエストの送信 $res = $ua->request($req); # 出力のチェック if ($res->is_success) { print $res->content; #←ここが取得したあいたいです。 } else { print "Error: " . $res->status_line . "\n";
この前WebService::Bitlyというモジュールを作ってCPANに登録したので、忘れないうちにそれを行なうまでの手順をメモしておきます。これからCPANモジュールを作る人の参考になればと思います。 0.いろいろなドキュメントを読んでおく 間違ったモジュールをCPANに上げると迷惑がかかるようなので、最低限下のドキュメントは読んでおいたらいいと思います。 PAUSE: The CPAN back stage entrance perlnewmod - 新しいモジュールを配布するには - perldoc.jp 1.モジュール名を決めて、ひな形を作る まずモジュールの名前を決めます。CPANモジュールは、「このようなモジュールはこの名前空間」のような慣習があるようなので、それを考えながら決めます。 名前が決まったら、モジュールのひな形を作ります。僕はModule::Starter::PB
今日で株式会社ソフリットが設立されて1年です。また「会社を作って1年たったまとめ」を書こうかとも思ったんですが、あんまり面白くならなかったので、今年覚えたことのうちでいちばん重要そうなことをまとめようと思います。それは「Makefile.PLを書こう」ということ。 ではさっそく、これからHoge.pmというperlモジュールを書くとしましょう。 [danjou@guido] $ mkdir Hoge [danjou@guido] $ cd Hoge ここでおもむろにMakefile.PLを書き始めます。 [danjou@guido] $ vim Makefile.PL use inc::Module::Install; WriteAll; とりあえずこれだけ書いて保存します。そしてperl Makefile.PLとして実行します。 [danjou@guido] $ perl Makefil
Perlのモジュールを書こうと思うなら、Foo.pm や Makefile.PL など、必要なファイルをいちいち手で書いて揃えなくても、一括で雛形を揃えてくれる便利なコマンド(モジュール)があるので、それを利用します。 index module-setup Perlモジュールの雛形づくりに module-setup コマンドは強力な助けになります。 module-setup コマンドは Module::Setup をインストールすると付いてきます。 $ cpanm Module::Setup Module::Setup がインストールできたら、module-setup コマンドを初期化しておきます。 何も難しいことはなく、--init オプションをつけてコマンドを叩いたら、良しなに質問に答えていくだけです。 $ module-setup --init Do you use SVN? [yN
冗談ですよ、冗談。●オリジナル : http://d.hatena.ne.jp/tasukuchan/20080127/flash_javascript_perl●オリジナルのオリジナル : http://shatyou.hp.infoseek.co.jp/toho2.html
2008年06月30日04:00 カテゴリLightweight LanguagesTips perl - use Carp; # warn() と die() だけじゃなくて 以下のエラー処理の方法にちょっと口を挟みたくなったので。 エラー処理を行う。 - サンプルコードによる Perl 入門 warn() vs. die() まず、warn()の使い方。エラーに対して使ってはいけません。warnはその名の通り、あくまでもエラーではなく警告です。エラーの際にはdie()を使わなければなりません。 警告とエラーの違いですが、警告は「続けて処理してもいいけど、これはあなたの意図ではないかもしれません」という場合、エラーは「このままでは処理を続けられません」という場合です。 たとえばperlの場合、抜けた引数はundefなので、数値としては0、文字列としては''として解釈されます。それらをデフ
Perl › モジュール › here Exporterモジュールを使用すると、モジュールから関数をエクスポートすることができます。 # パッケージの宣言 package YourModule; # Exporterを継承 use Exporter 'import'; # エクスポートする関数を記述 our @EXPORT = qw/func1 func2/; # エクスポート可能な関数を記述 our @EXPORT_OK = qw/func3 func4/; # 関数 sub func1 { ... } sub func2 { ... } sub func3 { ... } sub func4 { ... } Exporterを使ってモジュールを作成すると、そのモジュールをuseしたときに関数がインポートされます。 「use モジュール名;」という形でuseを実行した場合は@EXPORT
http://www.postlbs.org/postlbs-cms/ja/geocoder オープンソースの GeoCoder。「ジオコーダーじゃ」と読むらしい。 これはすごいな。 早速使ってみた。 まずデータを揃えるのが結構大変。 ゆうびんホームページの郵便番号データと国土交通省から街区レベル位置参照情報のデータを取ってきて、Windows専用のデータ変換ツールでデータを構築する必要がある。 国土交通省のデータのダウンロードがすさまじくだるい・・・ 普通にクリックしていくと多分全部集めるのに200回ぐらいクリックしなきゃいけない。 FireBugで多少楽はしたけど大変だった。 このありえないインターフェースはなんとかならんのかなぁ。 で使ってみた感じは、検索は非常に速い。 精度はGoogleMapsのGeoCoderとかにはかなわないけど、それなりにいい感じ。 一番詳細なレベルではてな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く