本当にただのメモ

なるべく Qiita に投稿しよう

perl

Perl で標準モジュールだけで http request したいとき

なんと LWP::UserAgent は非 core module HTTP::Tiny が core module なんだけど、SSL 通信をするには IO::Socket::SSL (非 core module )が必要なので、実質使えない 仕方ないので Perl のスクリプト内で curl を呼んだ ... use IPC::Cmd qw(run can_run)…

Mechanize で checkbox を操作するメモ

こういうチェックボックスのとき: <input type="checkbox" name="foo" /> on にする: submit_form(fields => { foo => 'on' }) off にする: submit_form(fields => { foo => 'off' }) こういうチェックボックスのとき: <input type="checkbox" name="foo" value="1" /> on にする: submit_form(fields => { foo => 1 }) off にする: submit…

WWW::Mechanize の strict_forms => 1 オプション便利

存在しないフィールドを指定すると例外を吐くようになる。 v1.82 から使える機能。 https://metacpan.org/pod/WWW::Mechanize#strict_forms $mech->submit_form( fields => { ... }, strict_forms => 1 ); みたいにして使う。 テスト書いてるときに、フィー…

Xslate で未定義変数の事故を防ぐための Tips

ほぼ https://github.com/xslate/xslate.github.com/wiki/Text::Xslate::Manual::Debugging.ja に書いてあるとおりですが。 開発環境ではとりあえず verbose => 2 有効にしておく undef に対する警告とか出してくれる。 my $xslate = Text::Xslate->new(verb…

Plack::Request の body とか content の使い分け

いつも迷って調べるのでメモ。 https://metacpan.org/pod/Plack::Request 結論 フォームデータなら ->body_parameters Returns a reference to a hash containing posted parameters in the request body (POST). As with query_parameters, the hash refere…

Carp.pm のメソッド

これいつも忘れる。 説明 警告を出力するメソッド 例外を発生させるメソッド 呼び出し元が分かる carp() croak() スタックトレース cluck() confess()

Perl でメールを送るなら Email::Send より Email::Sender::Simple が良さそう

理由としては、Email::Sender::Simple を使ったほうが良いからと言うよりは、Email::Send を使わないほうが良いから。 Email::Send#send の戻り値は Return::Value という deprecated なモジュールのインスタンスなので、エラーハンドリングがややこい。 Ema…

XML::LibXML で XPath で要素を取得する

そもそも XPath が分からない //を用いて途中までのパスを省略 //span 属性を指定 //span[@class='regular_price'] XML::LibXML を使って XPath で要素を取得 XML::LibXML::XPathContext でラップする my $document = XML::LibXML->load_xml(string => $xml_…

XML::LibXML で XML をパースし、要素を取得する

use XML::LibXML; my $xml_str = <<'__XML__'; <root> <category> <name>fruit</name> <item> <name>apple</name> </item> <item> <name id="pearname">pear</name> <price>200</price> </item> </category> <category> <name>car</name> </category> </root> __XML__ # $document is a XML::LibXML::Document my $document…

Test::Class の attribute

https://metacpan.org/pod/Test::Class setup, teardown Setup and teardown methods are run before and after every test . https://metacpan.org/pod/Test::Class#2)-Setup-and-teardown-methods startup, shutdown Startup and shutdown methods are lik…

Test::Deep の methods()

https://metacpan.org/pod/Test::Deep#methods オブジェクトをまるっと cmp_deeply するのではなく、一部のメソッドの値だけテストしたいときに便利な test utility 。 #!/usr/bin/env perl use common::sense; use Test::More; use Test::Deep; package MyC…

Plack で Set-Cookie

https://metacpan.org/pod/Plack::Response#cookies に書いてあるとおりだけども。 my $app = sub { my $res = Plack::Response->new(200); $res->cookies->{foo} = 123; $res->cookies->{bar} = { value => '123' }; $res->cookies->{baz} = { value => 'te…