perl

Mojolicious を使ってみる

ものすごいドキュメントが充実してる。 Mojolicious - Perl real-time web framework とりあえずインストール $ cpanm Mojolicious Fetching http://search.cpan.org/CPAN/authors/id/K/KR/KRAIH/Mojolicious-1.12.tar.gz ... OK Configuring Mojolicious-1.…

perlbrew

メモ。前にcpanmとlocal::lib入れて、特に不便は感じてないけど、perlbrewも今更ながら試してみたい。 Kansai.pm#13で「Perl5環境構築」という話をしてきた - LAPISLAZULI HILL#Hatena とか参考にしてあとでやる。

オプション > コンフィグ > デフォルト値の優先順位で設定

メモ。 #! /opt/local/bin/perl use strict; use warnings; use Getopt::Long; use Config::Simple; my %option = ( hoge => '', ); Config::Simple->import_from("$ENV{HOME}/.testconfig" ,\%option); GetOptions( 'hoge=s' => \$option{hoge}, ); print <…

複数ファイルの共通行を抜き出す(または共通でない行を抜き出す)

(同じファイル内には同一行が無いのが前提)共通行を抜き出すだけだったら、ワンライナーでさくっと書ける。 $ perl -nl -e 'BEGIN{$c=scalar @ARGV}; $h{$_}++; END{ for (keys %h){print if $h{$_} == $c}; }' file1 file2 file3 ... BEGINブロック内でARGV…

perldoc-search のインストール

perldoc-search つかえば良い - 理系学生日記を見て、便利そうだったので入れることにした。 インストール $ cpanm App::Perldoc::Search 使い方 書式 perldoc-search <探したい文字列> <検索対象のディレクトリ> 例1:「perldoc-search」という文字列を含む…

cpanminus のインストール

※ 上記のエントリ「local::lib のインストール」を先に実施した miyagawa/cpanminus · GitHubの「INSTALLATION」の項を参考に実施。 手順 最新版をダウンロードする $ git clone git://github.com/miyagawa/cpanminus.git インストール $ cd cpanminus/ $ pe…

local::lib のインストール

local::lib - search.cpan.orgを参考に実施。 OSは「Mac OS X 10.5.8」。 手順 最新版をダウンロードする 上記CPANのドキュメントページの右側「Download:」の部分に最新版のダウンロードリンクがある。 $ wget <最新版> 展開 $ tar zxf local-lib-1.004009.…

JPerl Advent Calendar 2009

あとで読む http://perl-users.jp/articles/advent-calendar/2009/

MacOS XにPlaggerインストール

使えるまでのおおまかな流れとしては、Plaggerの動作に必要なPerlモジュールをインストール → svnから最新のPlaggerをチェックアウト → 設定 → 利用可能。といった感じ。 インストール 1回目失敗 cpan[9]> install Plagger ... Test Summary Report --------…

Perlモジュールをパスを検索

※ 2010/03/06 追記: 普通に「perldoc -l 」で調べられた。。。。今迄知らなかった…。 いつもPerlモジュールのコードを読むときは「perldoc -m モジュール名」としているが、モジュールのパスだけ知りたいときもある。 そんなときのために簡単なコードを書い…

ワンライナーで同時に2つ以上のファイルを開きたい

openを使わないでできたらたまに便利だなと思ったのでメモ。 イメージはこんな感じ。 file1とfile2の各行がそれぞれ$Var1と$Var2に入ってループする $ perl -wnl -e 'print $Var1 - $Var2;' file1 file2 後で調べる。

エラー処理の方法

仕事で他人(といっても先輩だけど…)の書いたコードを書き直すことがよくあるんだけど、 種類の違うエラーが全て1つのフラグ変数によって処理されてて、非常に読みにくかった。 雰囲気はこんな感じ # 汎用のエラー変数(変数名の意味は謎...) my $iErrFlg = 0;…

変数のスコープ

次のコード中で、関数 &a() の中から $global にアクセスできないと思ってた… 追記:読み返すとおかしなこと書いてるな…(というより、当たり前だろっていう…)、前から「思ってた」んじゃなくて、プログラム書いてる途中になぜかそう「思ってしまった」という…

perl のパラグラフモードをワンライナーで使う

Minimal Perl(原著) の p149 に載ってるパラグラフモード(-00 パラメータ)を使った例が便利そうだったので、基本的な使い方をメモ。 ~% perl -w -e 'for (1..100){ printf "%3s ", $_; print "\n" if $_%10 == 0; print "\n" if $_%20 == 0}' > one_to_h…

Minimal Perl

オライリーから翻訳版が発売されるらしい。 O'Reilly Japan - ミニマルPerl 実は今、原著の pdf版で読んでいるんだけど、一言で言うと、ワンライナーかわいいよワンライナーという感じの本。 具体的に言うと、grep, sed, awk, find などのコマンドの Perl版…

alias がどこで設定されてるか調べた

一つも alias を設定した覚えが無いのに、 % alias l.='ls -d .* --color=tty' ll='ls -l --color=tty' ls='ls --color=tty' run-help=man which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' which-command=whenceと、いくつ…

カレントディレクトリのファイル名に日付を含める

% perl -e 'while (<*>) {($file, $ext) = split(/\./, $_); rename($_, $file . `date +%Y%m%d` . ".$ext")}' colinux 上の Fedora7 から見ると大丈夫なんだけど、Windos2000 から見るとファイル名がわけ分からなくなってる。何でだろ?

ヒアドキュメント中の関数呼び出し

できるんだ…。知らなかったのでメモ。 ヒアドキュメント中の関数呼び出し - Perl表技集(via: Perlのヒアドキュメント内で関数を呼ぶ/楽) 以下引用。 print <

utf-8 のまとめ

Perl 弄ってるとたまに utf-8 関連の(自分にとって)謎の警告が出て悩むことがあるので、メモして後で読めるようにしておく。良さげなエントリを見かけたらその都度追加していくことにする。 Perl で utf-8 を扱う際に参考になりそうなページ Perl5.8でUTF-…

Perl で UTF-8(個人的メモ その2)

この前よく理解できなかった(参考:Perl で UTF-8 - 英語とプログラミング気まぐれ日記) UTF-8 についてまとめてくれてるエントリを見かけたのでメモ。 Perl5.8でUTF-8のメモ/楽

ファイルの共有ロックと排他ロック

CGIプログラミングの p.178 で謎の共有ロックなる用語が突然出てきたので調べてみた。 @ITの記事がわかり易かったので、自分用にメモ。 共有ロック(をかけたファイル):他のプロセスの読み込み(共有ロック)は許すけど、排他ロックは許さない 排他ロック…

local *FH; open FH, $filename; って何?

オライリーのCGIプログラミングを読んでいるのですが、 p309にで.. - 人力検索はてなが参考になったので、自分用にメモ。 要は、「my FH」とか「local FH」といったことができない(ベアワードを許さない)から「local *FH」と型グロブを使うしかないらしい…

Perl で UTF-8

オライリーの「CGIプログラミング 第2版」の p.172 に以下のような例が載っている(Embperl の利用例)のだけど、なぜか HTML のテーブル部分の日本語が文字化けして困った。 <html> <head> <title>Table Sample</title> </head> <body> <div align="center"> <h1>$row, $col の実験</h1> [- @sports = ( [ "ウインドサーフィン", "</div></body></html>…

Embperl のインストールメモ

CGIプログラミングの p.163 で紹介されてるモジュール。 なんかこのモジュール、日本語の情報が少ない気がする…。あまり使われてないのかな? cpan で楽々インストール。 % cpan HTML::Embperl インストールされたか確認するために use してみる。 % perl -M…

&split の動作

split /PATTERN/,EXPR の PATTERN の違いによる微妙な違いがよく分からなくて混乱してきたのでメモ。後でまた必要になったら読み返す。 % perl -de 0 DB<22> print join(' :', split(' ', ' hi there')) hi :there DB<23> print join(' :', split(/\s+/, ' h…

GDモジュールをインストール

perl から jpeg画像の大きさを一気に変換(縮小)したかったので、GDモジュールを入れることにした。 cpanコマンドでインストールしようとしたけど、「libgd」がどうたらで怒られてインストールできない。 % cpan install GD そこで、「gd-something」で探し…

あほきもちいい

「はてなダイアリー」で世界のナベアツ問題というのが紹介されてたのでやってみた。 #!/usr/bin/perl -w use strict; foreach (1..100) { print "$_: "; print "あほ" if $_ % 3 == 0 || m/3/; print "きもちいい" if $_ % 8 == 0; print "\n"; } FizzBuzz …

$CGI::DISABLE_UPLOADS ではまった

CGI.pm で「$DISABLE_UPLOADS = 1;」として、ファイルのアップロードを無効にしておいたのを忘れて、アップロードを行う CGI を実行しようとしていた。この状態で、 my $q = new CGI; my $file = $q->param('file') としても、「$q->param('file')」の戻り値…

文字列を print すると「Wide character in print at」と出力されて困った

以下のプログラム(参考:作って学ぶ、今どきのWebサービス: 第2回 RSSフィードの料理はLWPとXML::RSSにおまかせ)を実行したら、「Wide character in print at」というメッセージが print を実行する度に出力されてしまった。 #!/usr/local/bin/perl # http…

XML::RSS がインストールできなかった

% cpan XML::RSS が失敗してインストールできなかった。 そこで、google で検索してみると同じ悩みの人が既に解決してくれていたので助かった。 XML::Parserがインストールできなかったよ - urapico's diary どうやら、expat-devel っていうパッケージが足り…