2007年02月11日

Perl小技メモ1

ずいぶん久しぶりにPerlでプログラムを書く機会ができた。いろいろと調べたことを備忘録として書いておこう。

Beep音を鳴らす方法
実行したまま放置しているプログラムでエラーが出たときにBeep音を鳴らせばすぐに気がつくので便利。一番簡単な方法は、
print "\a";
他の方法として、Audio::Beepモジュールをインストールする方法もある。Audio::Beepはいろいろと高度なことができるみたい。Windows上ではWin32::APIというモジュールをインストールしないと動かない。これは、Audio::BeepをActivePerlのppmでinstallしたときに自動判別してくれないので、手動でWin32::APIも入れる必要がある。試していないが、Beepでなく音声ファイルを再生するモジュールとして、Win32::MediaPlayerというのもあるようだ。

DDE通信をする方法
Windowsのプロセス間通信の過去の遺産ともいうべきDDEだが、Perlでこれをするには、Win32::DDEというモジュールを使えばいい。ActivePerlにはないので、ここを参考にしてppmの設定をしてインストールする。恐らくいまどきDDEを使おうというのはあまりないと思うので、これに関する話題は本サイトに書く予定(2007/05/27に書いた)。

Excelのファイルの内容を読む方法
Spreadsheet::ParseExcelというモジュールが使える。また、Excelでセルの表示形式が「時刻」になっているセルを読み込むと、期待したとおりの情報が取得できなかった。これは、Excelの内部データの保持の方法の問題のようで、これを解決するには、Spreadsheet::ParseExcel::UtilityのExcelLocaltimeという関数を使えば変換できる。(Spreadsheet::ParseExcel::Utilityは、Spreadsheet::ParseExcelに含まれている。)

標準偏差を計算する
Statistics::Descriptiveというモジュールが使える。
my $stat = new Statistics::Descriptive::Sparse();
$stat->add_data(@_);
my $mean = $stat->mean(); # 平均
my $var = $stat->variance(); # 分散
my $stddev = $stat->standard_deviation; # 標準偏差
[2007年2月25日追記]
Statistics::Descriptiveモジュールは、分散の計算にn-1で割る方式を使っている(マニュアルにも記載されている)ので、母集団の数が少ない場合などは誤差が生じてしまう。結局、自分が使う用途だと母集団の数が少なくて誤差が気になったので、定義どおりに計算することにした。Wikipediaの分散標準偏差についての項目が参考になった。あと、ExcelのSTDEV関数とかSTDEVP関数とかも近似式を使っていることが分かって、勉強になった。
タグ:Perl
posted by mako at 18:38| 東京 ☀| Comment(0) | TrackBack(0) | メモ(PC・インターネット関連) | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/33447537
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。