Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

2010-11-01から1ヶ月間の記事一覧

クラスのオープン性

Ruby勉強中。その中でRubyにはクラスのオープン性、またはRubyのクラスはオープンクラス、という記述を見つける。 class Animal; end class Yahoo < Animal; end class Yahoo; end # 再オープン p Yahoo.superclass #=> Animal このように既存のクラスに対し…

ハイパー間接オブジェクト記法タイム

perldoc perlobj-Indirect Object Syntax。 また気持ち悪い書き方を覚えてしまったぜ・・・。 use strict; use warnings; use CGI; my $args = { param1 => 'value1' }; my $q = new CGI$args; #=> typoじゃないよ! my $p1 = param $q('param1'); say $p1; …

マジック1

モジュールの最後につけられる「1;」は別に1じゃなくても何でもよくて、要するにモジュールの最後の評価として true が返ればよい。 package Hoge; ... ... 10-5; とか package Hoge; ... ... "NG"; とか package Hoge; ... ... '0.0'; とかでも問題ない。 …

内容のないラベル

Any::Eventのコードをいろいろ見ていたら、ただのセミコロンにラベルが貼られていたのを見て驚いた。 AnyEvent-5.28/util/gen_uts46data ... # try to find a valid quoting character - there usually are many legal combos for (1..127) { # stay out of …

配列の添字代入

プログラミング言語Rubyを読みつつ、初めてのRubyも読み返したりして、Ruby面白!状態だけど、たまにPerlをかまってあげたくなる不思議。 今日もおや?、と思うところあったので、メモ。 配列の添え字代入 要素数 左辺 < 右辺 Rubyの場合。1.9.2。 ary = [ …

ifの戻り値

ただいまプログラミング言語RubyでRubyを学習中。 その中で目をひく記述、なんとRubyはifでの戻り値があるらしい。 year = 2010 month = 11 nendo = if month >= 4 then year elsif month <= 3 then year - 1 else raise end puts nendo #=> 2010 Perlでもこ…

組込み関数lock

10分はまったのでメモ。 現在編集中の画面をロックする、という意味のロックサブルーチンを作って、コールするプログラムを書いた。 my $lock_time = lock($arg1, $arg2, $arg3, $arg4); ... sub lock { my ($arg1, $arg2, $arg3, $arg4) = @_; ... return; …

後置ifと変数スコープ

メモ。 しかしすぐに先駆者を見つける。 後置ループにもスコープがある? - Practice of Programming疑問:mod_perl と 後置 if と my - makogの日記 ありがとうございます。 use strict; use warnings; use 5.012; my $flag = 0; my $err = 1 if $flag; # ←★…

配列の要素数とフィルタ後の要素数を比較

配列の中に、ファイルパスが入っていて、それらのファイルが全て既に存在するときだけその場で処理を返す。 my @files = ('./aaa.txt', '/tmp/bbb.txt', '~/ccc.txt'); if (@files == grep -f, @files) { return; } 割とスマート。

ループの外で宣言すると早くなる?

ループをたくさん回す処理を高速化する初歩の初歩。 - このブログは証明できない。 こちらを見て少し気になったのでPerlでベンチマークやってみた。 #!/usr/bin/env perl use strict; use warnings; use Benchmark qw/ timethese cmpthese /; my $out_of_loo…