2008-08-01から1ヶ月間の記事一覧

正論は 言うものではなく 言わせるもの

正しいことだとわかっているのにできないことがある。 わかっているのになんでできないんだ、と言われる。 できないということは、本当はわかっていないのかもしれない。 わかっているつもりなのに、できていないことを指摘されると痛い。 痛いから無視する…

配列の各要素を組み合わせて二次元配列を作る

#!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); my @al = qw(1 2 3); my @bl = qw(a b c); my @list; for my $a (@al) { for $b (@bl) { push @list, [$a, $b] } } print dump(@list); ( [1, "a"], [1, "b"], [1, "c"], [2, "a"], [2,…

CGIでセッションを使用する

#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Cookie; use CGI::Session; my $q = CGI->new; # セッションIDを取得 my $sid = $q->param("CGISESSID") || undef; # セッションIDからCGI::Sessionオブジェクトを作成 my $session = CGI::Ses…

Amazonからデータを取得して、ハッシュに変換する

というモジュールを作ってみた。XML::SimpleやXML::LibXML::Simpleを使った方が楽なんだけど、 $xml->{BrowseNodeResponse}->{BrowseNodes}->{BrowseNode}; というふうに書くのが面倒なので、XML::LibXMLを使って任意のハッシュデータを作るようにしてみた。…

アダルト商品の判別

ResponseGroupにItemAttributesを指定して、ItemAttributes/IsAdultProductが1ならアダルト商品。

バッチリクエストでResponseGroupを指定すると、内部サーバーエラーになる

#!/usr/bin/perl use strict; use warnings; use URI; use LWP::UserAgent; my $uri = URI->new("http://webservices.amazon.co.jp/onca/xml"); $uri->query_form( Service => "AWSECommerceService", Version => "2008-04-07", AWSAccessKeyId => $access_k…

型グロブとシンボリックリファレンスで動的にメソッドを追加する

#!/usr/bin/perl use strict; use warnings; package Hoge; sub new { my $class = shift; return bless {}, $class; } sub mk_accessor { my ($self, $accessor) = @_; my $class = ref $self || $self; my $code = sub { my $self = shift; $self->{$acces…

型グロブ

型グロブは識別子の前に*を付けて表し、別名を付ける時などに使う。 *bar = *foo; これで、fooという識別子でアクセスできる変数やサブルーチンに、barという識別子でもアクセスできるようになる。 $foo = "hoge"; @foo = (1, 2, 3); %foo = (a => 1, b => 2…

シンボリックリファレンス

例えば、$strの値が"hoge"だとして、 print $$str; # $hogeの値を表示 push @$str, 1; # @hogeに要素を追加 $str->{a} = 1; # $hoge{a}に代入 &$str(); # &hoge()を呼び出す というようなことができるのが、シンボリックリファレンス。使い方は普通のリファ…