ゆきのぶ日記
2008/08/04(Mon) [長年日記]
■ [Perl] Crypt::SSLeay のインストールメモ
WWW::Mechanize で SSL 通信をするときに必要になる Crypt::SSLeay モジュールのインストールメモ。
今回の対象は ActivePerl 5.8.8 Build 820 だったので ppm でインストール。下記のコマンドでうまくいった。
ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
ssleay32.dll については、特に必要なかった。
Fetch ssleay32.dll? [no] Aborting download of ssleay32.dll.
なお、cmd.exe 上からはすんなり行くけど、cygwin の bash 上からでは下記のエラーとなり、ダメだった。
Can't locate ActivePerl/PPM/limited_inc.pm in @INC
以上、やる度に一から調べている気がするので、ここにメモ。
■ [Perl] 正規表現マッチを一行で
正規表現で文字列を取り出して変数に代入するような時、下のように数行で書いていた。
my $code; if( decode('shiftjis',$mech->content) =~ /code=([\d\w]+)/ ) { $code = $1; }
もっと省略したいと思って色々やってみたが、下のようにすると一行で書けるようだ。カンマ演算子の左結合が ポイント。
my $code = ( decode('shiftjis',$mech->content) =~ /code=([\d\w]+)/, $1 );
しかしこの方法も、リストコンテキストで評価される時にはうまく動かない(下の場合だと、key と value の関係が意図したとおりにならない)。
my $codes = { code1 => ( decode('shiftjis',$mech->content) =~ /code1=([\d\w]+)/, $1 ), code2 => ( decode('shiftjis',$mech->content) =~ /code2=([\d\w]+)/, $1 ), };
こんな時にも、scalar をつけると、意図したように動くようになった。
my $codes = { code1 => scalar ( decode('shiftjis',$mech->content) =~ /code1=([\d\w]+)/, $1 ), code2 => scalar ( decode('shiftjis',$mech->content) =~ /code2=([\d\w]+)/, $1 ), };
いや、やっぱりダメなようだ。あとで考える。
追記
頂いたコメントを参考に、下記のように書いたら、意図したとおりに動くようになった。
my $codes = { code1 => (decode('shiftjis',$mech->content) =~ /code1=([\d\w]+)/)[0], code2 => (decode('shiftjis',$mech->content) =~ /code2=([\d\w]+)/)[0], };
調べてみると、リストコンテキストでパターンマッチを行った場合には、結果がリストとして返されるようだ。 今回はその 0 番目の要素を抽出することで、意図したとおりの動きになった模様。
しかしこの方法も、マッチ対象がなかった場合には、key と value の関係が崩れてしまうようなので、注意し て使いたい。
drry さん、ありがとうございました。
2008/08/12(Tue) [長年日記]
■ 勉強を続けるために時間割を作った
勉強って続けるのが難しいと思っていたところに、良いエントリを発見。
マインドマップと復習は置いておいて、時間割は大事だと思った。何をしようか迷ってしまい、結局何もしない日はよくあるので、迷う時間を減らせるのは良いことだ。
- 月:技術関連、当面は資格に向けた予習中心
- 火:英語の勉強を iKnow や VOA などで
- 水:人間関係に関する本を読むなど
- 木:プログラミング関連
- 金:経済関連
とりあえず、ざっくりと分野だけ決めた。勉強できる時間が確保できた平日は、こんな感じで勉強していくことにしよう。
2008/08/16(Sat) [長年日記]
■ [PC] Thinkpad X40 キーボード交換計画
愛用している Thinkpad X40 の TrackPoint の調子がよくない。
具体的には、何も触っていないのに、マウスカーソルが高速で移動するようになったと言うもの。この症状は常に起きるので、マウスを使った操作は何もできなくなった。OS 上で、マウス感度の調整をしても特に効果なし。
今は TrackPoint を無効にして USB マウスで凌いでいるけど、スペースがないときには不便極まりない。そして、私が Thinkpad を使う大抵の場所では、そんなスペースはない。
なので修理したいと思う。まずは、余りお金のかからない方法と言うことで、ヤフオクでキーボードを取り寄せて自力交換をやってみる事にする。
…ここまで書いて思ったけど、TrackPoint の問題ってキーボード交換で直るんだろうか?
(追記1)ヤフオクでキーボードを買った。新品で 6,000 円だった。
(追記2)交換したところ、TrackPoint の問題は解決した。やはりキーボードは TrackPoint の機能を有しているだろうという予想は正しかったようだ。キーボードも新品になって気持ちいい。
● drry [my $codes = { code1 => (decode('shiftjis', $mech->content)..]
● ゆきのぶ [ありがとうございました! 追記しました!]
● joan [my $code = decode('shiftjis',$mech->content) =~ /code=(\w+..]