Perl

ニコニコ動画のランキングデータをRSSから取得する

RSSはログインなしで読めるらしいので、読んでみた。 use strict; use utf8; use XML::FeedPP; use constant RANKING_ALL => 'http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom'; use Data::Dumper; binmode(STDOUT, ':encoding(ms932)'); # MS-C…

日本語を英語、英語を日本語に翻訳する

どんなことに使えるかは謎だけど変換する。 PerlからGoogleのAjax Language APIを使って変換する。Ajaxではないけど、Flashやその他環境からもWeb APIが使える。 詳しくはGoogle Translate API — Google DevelopersのFlash and other Non-Javascript Environ…

日本語文章をローマ字に変換する

どんなことに使えるかは謎だけど変換する。 単語間が繋がると読みにくいので、スペースを空けることが重要。スペースを空ける方法は振り仮名に応用できて、たとえば幼稚園児でも2ちゃんねるが読めるように文章に振り仮名を振るCGI PROXYとかが簡単に作れる…

utf8のMeCabとPerlのutf8フラグ

MeCabをutf8用にコンパイルして、Perlから使いました。 そして恐ろしいことが! 恐ろしいことその1 MeCcabから戻る文字列にutf8フラグがつかない MeCabの出力は文字コードでいうとutf8なのですが、Perl的にはutf8フラグがついていないとただのバイト列とみ…

LWP::UserAgentでgzip,deflateエンコーディングを使うときに文字コード変換が原因でデコードに失敗することについて

タイトルがアレですが、LWPでContent-Encodingがgzipのコンテンツを展開するときに、コンテンツのcharsetに合わせた文字コード変換が動いてしまって、そのときに変換できない文字があるとundefを返すので困った! という話です。 LWP::UserAgentというか、HT…

getterとsetter

getPiyoPiyo、setPiyoPiyoではなく、piyo_piyoを1つ作り、引数によってgetter/setterを切り替えるプロパティっぽいのが一般的みたい。 sub name { my($self, $name) = @_; return defined($name) ? ($self->{name} = $name): $self->{name}; } たぶんこんな…

メソッドの引数形式について

その1 my $result = $object->method($piyo, $foo); 普通の渡し方。 受け取るときは、 sub method { my($self, $piyo, $foo) = @_; } こう。 連想配列が配列と同じ(`=>'と`,'が同じトークン)なのを利用して、 my $result = $object->method(PIYO => $foo)…

perldocでパッケージのソースコードも参照する

perldocに-mオプションを指定するとソースコードを表示してくれます。ドキュメントの説明がよくわからないときなどにPerlディレクトリの奥地からソースコードを探してこなくてもよくて便利です。 perldoc -m LWP::UserAgentとか。

newの記述方法 前に書く? 後に書く?

Perlでは、 my $result = object->method(); という書き方と、 my $result = method object(); という書き方ができるので、C++やJavaになれてしまっている人(オレ)は、ついnewのときだけ後者のほうを使ってしまいます。 どうなんだろう? と思ったのでGoog…

ソースコードをutf8で書く

use utf8;ソースコードをutf8で書くときは、use utf8を書く。こうするとソース内の文字列リテラルがutf8だと解釈されるようになる。 しかし、こうしてプログラム全体でutf8を使うようになったときに次のことに困る。 Windowsのコマンドプロンプトに出力する…

Perl

いろいろと思うことがあって某巨大掲示板のアレを保存するものをPerlで作りはじめました。 Perlは自分がパソコンでのプログラミングをはじめた頃、つまりはものすごいやる気に満ち溢れていた頃に使っていたので、結構得意なつもりなんですが、プログラミング…