トップ «前の日(08-03) 最新 次の日(08-05)» 追記

ゆきのぶ日記


2006/08/04(Fri)

[PC][トレード] シストレ開始

年初に思い立った,今年の目標『為替のシステムトレードを始める』を今週達成した。

今現在で,開始して一週間程度。すべてが順調に動いている。

このまま計算通りにいれば,一年ほどで財産が 10 倍になる計算だ。

まさか順調に進むとは思えないけど,とりあえず精進していこう。

本日のツッコミ(全1件) [ツッコミを入れる]

たっきー [なんか過去のブログ読んでるとワクワクしてきますねー。 思い立ってから実行までが早!さすがプログラマさんです。 関係な..]


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 さん、ありがとうございました。

本日のツッコミ(全3件) [ツッコミを入れる]

drry [my $codes = { code1 => (decode('shiftjis', $mech->content)..]

ゆきのぶ [ありがとうございました! 追記しました!]

joan [my $code = decode('shiftjis',$mech->content) =~ /code=(\w+..]