perl

perl における配列を返す部分式の n 番目の要素を返す記法

例えば今,配列を返す関数があるとする. sub f { (1, 2, 3); } f() の返り値の n 番目の要素を得るには次のようにすればよい. @a = f(); print $a[$n]; この時,一時変数 @a を使わないようにするにはどうすればよいだろうか?以下のようにすればうまくい…

perl で HTML ファイルの内容を書き換える

ネットからダウンロードした Web ページの内容を少しだけエディタで書き換えることがよくある,これを Perl を使ってプログラムからやるにはどのようにすればよいだろうか.HTML::TreeBuilder, HTML::Element あたりを使うことになるだろう. HTML をパーズ…

perl で強制的にリストコンテキストで評価する方法

perl で強制的にスカラーコンテキストで評価するには scalar を用いるが,強制的にリストコンテキストで評価するための list (仮称) は用意されていない.man perlfunc の scalar の項によると,これは実質的には全く必要無いからだそうであるが,両コンテキ…

Module::Starter::PBP による perl モジュール雛形の作成

perl のモジュールの雛形を作るには h2xs を使うのが定番だが,最近では Module::Starter を使うのがナウいということだ.さらに,Module::Starter::PBP を使うと Perl Best Practice に倣ったテンプレートでモジュールを作成できる.まずインストール. $ s…

Perl の CPAN モジュールのビルド(Build.PL)

Build.PL でビルドするときにインストールディレクトリを指定するには次のようにする. $ perl Build.PL --install_base ~/lhs 情報源 続・初めての Perl, p. 20.

perl の YAML.pm と Unicode

YAML::DumpFile で utf8 フラグが立った文字列をダンプすると 'Wide character ...' と警告が出る(どうやって防ぐ?) use utf8; use YAML; $a = '漢字'; YAML::DumpFile('a.yaml', $a); 上のコードで a.yaml は utf-8 で出力される.次に読み込んでみる. …

perl における例外の基礎

croak と eval を使用. use Carp; sub f { ... if (something is bad) { croak "fail"; } ... return something_good; } ... my $r = eval { f(); }; if ($@) { croak "f() fails."; } ... 参照 「Perlベストプラクティス」13章 エラー処理

perl の LWP でのタイムアウト

$ua->request() でタイムアウトすると,'500 read timeout' のエラーを持つ response が返される. $ua->request() で接続できないときには,'500 Can\'t connect to' のエラーを持つ response が返される.

perl で euc-jp の端末に出力

perl で euc-jp の端末に出力する. binmode STDOUT, ':encoding(euc-jp)';

debian の perl で css セレクタ経由の xpath を使うための準備

$ sudo apt-get install libtest-pod-coverage-perl libtest-pod-perl (+ libpod-coverage-perl libio-stringy-perl) $ tar xf XML-XPathEngine-0.08.tar.gz $ cd XML-XPathEngine-0.08 $ perl Makefile.PL PREFIX=~/lhs $ make && make test && make instal…

perl の Makefile.PL

$ perl Makefile.PL PREFIX=~/local

perl の LWP

SSL で接続するためには Net::SSL が必要,debian なら $ apt-get install libcrypt-ssleay-perl 参照 perldoc lwptut perldoc LWP perldoc LWP::UserAgent perldoc HTTP::Response perldoc HTTP::Message perldoc HTTP::Headers

perl のユニットテスト

参照 perldoc Test::Unit::TestCase

perl のモジュールパス

現在のサーチパスを表示する. $ perl -e 'print join " ", @INC;' スクリプトにサーチパスを設定 use lib 'perllib'; # スクリプトファイルがあるディレクトリ相対 use My::Perl::Lib; 環境変数で設定 export PERL5LIB=~/perllib いずれも @INC の先頭に追…

perl の Test モジュール

use Test::Simple test => 3; ok(...); ok(...); ok(...); use Test::More test => 3; # or use Test::More 'no_plan'; ok($this eq $that, $test_name); is($this, $that, $test_name); isa_ok($object, $class); SKIP, TODO 参照 perldoc Test::Tutorial p…

perl のモジュール — use のパラメータ

モジュール定義で @EXPORT = qw(F1 F2 @List); としたとき, use YourModule; で F1, F2, @List がインポートされる.モジュール定義で @EXPORT_OK = qw(Op_Func %Table); とすると, use YourModule qw(Op_Func %Table F1); のように個別にインポートする識…

perl でのモジュール作成 — 開発ディレクトリのセットアップ

h2xs はもともと perl から呼び出す C モジュール (XS) の stub 作成ユーティリティだが,XS を利用しない perl モジュールの開発ディレクトリスケルトンを作成するのにも便利. $ h2xs -AX -n YourModule これにより,モジュールの雛形はおろか,ユニットテ…