Perlを勉強中
ファイルに格納したJSON形式のデータを切り出して、XMLHttpRequestで受け取ることを考えている。
NiftyのホームページにCGIを置いて、そちらからデータを受け取る。(自宅サーバはまだ停止中だし、外部に公開したくない。しかもADSLだから、ADSLモデムを再起動するとIPは変わるし)
NiftyのCGIは、Perlかシェルを使えるが、シェルはまったく肌に合わないので、Perlを使用する。というわけで勉強中なのだが・・・。
Perlって、なんというのか、古き良き時代のハッカーが”俺様、天才”的考えで作り上げたって感じ。引数とか省略できることとか、変数の型(@,%,$を頭につけるところ)とか、そんなところが。
んで、CPANのJSONにある、{ }や[ ]は、ハッシュやリストらしいということはわかったのだが、手持ちの本ではハッシュは変数の頭に%を付ける、リストは変数の頭に@を付ける、データは( )で括るとあり、その違いはなんなのかわからなかった。eachやkeys、valuesでキーや値の一覧が取れないし。
なんとなくひらめいたので、”Perl オブジェクト”のキーワードでググッてみると、やはりオブジェクトみたいなものらしい。(まだ良くわかっていない)
オブジェクトにあるハッシュの値を取るには”->”を使う。例えば、CPANのJSONにある以下のデータは、
$obj = {
id => ["foo", "bar", { aa => 'bb'}],
hoge => 'boge'
};
$obj->{id}[0];とやると"foo"が取れる。
$obj->{id}[2]->{aa};とやると"bb"が取れる。
でも、keysとかvaluesでは値が取れないので、どうやって何が入っているのか調べるのかは今のところ不明。オブジェクト指向ということで、見られないのか?でも、リストの数くらいわからないとあかんよな。
ちなみに、リストの値(idの中)は、以下のようにすると舐められる。(参考は、ここのHP)
@e = $obj->{id};
for my $ref( @e ){
for $ref2( @{$ref} ){
print $ref2, "\n";
}
}
なんか、複雑怪奇だな・・・。
あと、JSONモジュールのjsonToObj()に引数にファイルから読み込んだ(文字列の)JSONデータを入れても、ちゃんとオブジェクトになるようである。
« Windows Media Player V10で「アナログ著作権保護の問題が発生したため、この DVD は再生できません」がでてDVDが再生できない | トップページ | 今日買ってきた本 »
« Windows Media Player V10で「アナログ著作権保護の問題が発生したため、この DVD は再生できません」がでてDVDが再生できない | トップページ | 今日買ってきた本 »
コメント