Perl

Higher Order Perl のフルテキストPDF版が無料ダウンロードできるよ

これはびっくりした。弾さんのblog経由で知ったのだが。 前から指をくわえていいな〜と思っていたのが キター って感じ。ダウンロードは以下から。 http://hop.perl.plover.com/book/pdf/HigherOrderPerl.pdfHigher-Order Perl: Transforming Programs with …

Perl: 正規表現 捕捉しない括弧

正規表現内で括弧を使用すると,$1などの捕捉変数が作られる。捕捉変数はいらないが,正規表現内でグループ化は行いたい場合,括弧ではなく「(?:....)」を使用する。 例 if ($cmd =~ m{\A (?: q | quit | bye | exit ) \n? \z}xms) { } See Also 正規表現

Perl: ファイル全体を一度に読む込む

以下がその方法。 my $code = do { local $/; <$in> }; 説明 グローバル変数「$/」は,入力レコードセパレータ。 これをローカル化すると,「$/」の値は undef となる。 「$/」の値が undef の場合,入力は分離されていない単一のレコードとして扱われる。 l…

「ブロック」と「無名ハッシュコンストラクタ」の曖昧さを解決する方法

プログラマがどちらのつもりで中括弧を使っているのか,コンパイラ(パーサ)に知らせる方法は以下の通り。 無名ハッシュコンストラクタを使うつもりだということをコンパイラに知らせるには { の前に + 記号を付けて,+{ ... } のように書く コードブロック…

Perl: サブルーチンからの失敗のリターン

"失敗状態を返すには、裸の return を使用する" Perlベストプラクティス作者: Damian Conway,クイープ出版社/メーカー: オライリー・ジャパン発売日: 2006/08/24メディア: 大型本購入: 11人 クリック: 153回この商品を含むブログ (155件) を見る

Perl における 「サブルーチン」と「メソッド」のプロトタイプの取扱い

サブルーチン プロトタイプはチェックされる メソッド プロトタイプは無視される これは知らなかった。 でも言われてみればそうだよね。OOで書いた場合,継承関係を辿ってメソッドを探す為,実行時にならないと,実際にどのメソッドが呼び出されるかは分から…

スリープ処理

Perlの組み込み sleep 関数は,スリープ時間を浮動小数点で指定した場合であっても,整数単位の秒数でのみ,プログラムを一時停止するらしい。 sleep 1.5; # sleep(int(1.5))と同じで,1秒間スリープする sleep 0.5; # sleep(int(0.5))と同じで,0秒間スリー…

正規表現

オプションのメモ 「x」オプション 空白文字が無視される コメントを挿入できる 空白を使いたいときは,\でエスケープする # を使いたいときは,\でエスケープする 「m」オプション ^ や $ のアンカーが複数行に対応する 「s」オプション . (ドット)が改行文…

miyagawa さん products の remedie を使ってみた

まず,ソースを取ってくる。 svn checkout http://remedie.googlecode.com/svn/trunk/ remedie/HACKING を読む。必要な事は全て書かれている。 依存モジュールを以下のコマンドで調べてインストールする。 ack -h ^use lib | sort -u | perl -Ilib 以下のコ…

Twitter/Wassr まとめて投稿

Twitter と Wassr に同じ内容の投稿をする為だけのスクリプト。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use Perl6::Say; use Net::Twitter; use Net::Wassr; use Term::Encoding; my $conf = { twit => { user => 'username', pa…

Perl 日本語処理 もう文字化けなんて見たくない

script は UTF-8 で書く use utf8; を使用し,perl に script が UTF-8 で書かれているという事を教える use strict; use warnings; use utf8; ファイルオープン時に文字コードを指定する open my $in, '<:encoding(euc-jp)', $infile or die "$!"; open my $out, '>:encoding(utf8)', $outfile or die "$!"; 外部から取</:encoding(euc-jp)',>…

Aha! Encode

受信したものはデコードし、出力するものはエンコードする。 ただし、それがテキストデータである場合に限る。あぁ〜なんてシンプルなんだ KISS バイト文字列 ----> Unicode 文字列 : decode() バイト文字列 <---- Unicode 文字列 : encode() Unicode 文字…

さよなら? Data::Dumper。初めまして Debug::Dumper

いつも Data::Dumper モジュールにはソースを Read/Write する時にお世話になっているんだけど,色々不満があったので Debug::Dumper というモジュールを書きました。Data::Dumper モジュールで不満だったのは特に以下の 2 点。 出力内容の encode 指定が出…

ハッシュや配列の命名規則 (こんなのもあるよ編)

名前の最後に前置詞(of,for,from 等)を追加すると,ハッシュや配列へのアクセスが理解しやすくなるそうな。 (by Perl Best Practices) → [ _ ]* サンプルコード my %title_of; my %ISBN_for; my @sales_from; while (my $month = prompt -menu => $MONTH_…

プログラマなら思わずニンマリの名言

コードを書くときには、あなたのプログラムを保守する誰かが、 あなたの居場所を知っている凶暴な変質者であると心得よ 出典:Perlベストプラクティス 思わず一人ニンマリしてしまいました。Perlベストプラクティス作者: Damian Conway,クイープ出版社/メー…

DNBKなコードレイアウト それコードフォーマッタ

忘れそうなのでメモ。Perlの有名なコードフォーマッタ perltidyPerl Best Practices の推奨コードレイアウトにフォーマットするには,.perltidyrcファイルに以下の内容を書けばいいらしい。 -l=78 # Max line width is 78 cols -i=4 # Indent level is 4 col…

BLOG HACKS買っちゃった!

我が憧れの宮川 達彦氏が執筆された名著。 やっと手に入れたぞ〜!Blog Hacks ―プロが教えるテクニック&ツール100選作者: 宮川達彦,伊藤直也出版社/メーカー: オライリー・ジャパン発売日: 2004/08/07メディア: 単行本購入: 6人 クリック: 348回この商品を含…

caller関数のメモ

#!/usr/bin/perl use strict; use warnings; package Foo; use Perl6::Say; sub foo { my ($pkg, $file, $line); $pkg = caller; say $pkg; ($pkg, $file, $line) = caller; say $pkg; say $file; say $line; } package Bar; Foo::foo(); # <実行結果> # $ p…

packageディレクティブのスコープ

package Foo; print __PACKAGE__ . "\n"; { package Bar; print __PACKAGE__ . "\n"; } print __PACKAGE__ . "\n"; # <実行結果> # ふむふむ,ブロックで package のスコープは変わるんだな。 # $ perl ./try.pl # Foo # Bar # Foo

use strict; と $a と $b

前にもハマって,今回もまた足を取られたのでメモ。昨日から以下のコードの結果に頭を悩ませていた。 #!/usr/bin/perl use strict; $a = 100; print "$a\n"; # <実行結果> # $ perl try.pl # 100 # あれ!? use strict; してるのに「Global symbol "$a" req…

evalブロックの返り値

undefが返るケース ($@にエラーメッセージがセットされる) ブロック内でエラーが発生した (構文エラー or 実行時エラー) dieステートメントを実行した 上記以外の場合は,ブロック内で最後に評価した式の値が返る See Also: eval

What time? What happen?

use がしていること # use strict; は内部的に以下のように展開される BEGIN { require 'strict' strict->import(); } BEGIN節, CHECK節 #!/usr/bin/perl use strict; use warnings; use Perl6::Say; say "When am I displayed"; BEGIN { say 1; } CHECK { s…

ASM命令 使わないとすぐ忘れる

kenjiaiko さんの書かれるblogやWizard Bibleの記事は,いつも興味深く拝見させてもらっています。本日も有用な記事を発見したので,メモメモ。よく使うASM命令ベスト100位に説明つけてみたちなみに,Wizard Bible のページはRSS/Atomが配信されていないので…

Perl Hacks 買った

Perl Hacks ―プロが教えるテクニック & ツール101選作者: chromatic,Damian Conway,Curtis "Ovid" Poe,株式会社ロングテール,長尾高弘出版社/メーカー: オライリー・ジャパン発売日: 2007/01/23メディア: 単行本(ソフトカバー)購入: 5人 クリック: 62回こ…