「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
あの犬は友ですか敵なんですか おばさん何も知らんのですか 飼い犬タロになっているつもりで詠む「犬短歌」、2025年上半期の歌です。暑くなるとタロの歌心は減退するようです。気に入ってる歌の最後には*マークをつけてます(/サキコとあるのは私名義の歌)。俳句も少し混じってます。 ◆ 一月 あの犬は友ですか敵なんですか お…
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
$ はスカラー 頭に $ がつく変数をスカラーといいます。 スカラーは、一つの値を持つことが出来ます。 その一つの値は、数値でも、文字列でも構いません。 $hoge = 'hoge'; $bar = 100; @ は、配列(array) 頭に@ がつく変数を配列といいます。 配列は、複数の値を持つことが出来ます。 つまり、複数のスカラーを持つことが出来ます。 配列は、スカラーを持ちます。また、順番を覚えています。 @hoge = ('hoge','bar','hoo'); 順番を覚えていますので、頭から順番に、0 から、番号がつきます。 これを添字といいます。この添字を使って、配列に格納されている各スカラーを使えます。 配列は複数のスカラーを持ちますが、その中のスカラーは、タダのスカラーです。 ですから、頭につくものは… print $hoge[0]; # hoge print $hoge
Perlのsort関数 - 数値のソートに挑戦したのですが… 目次 結論 数値のソートに挑戦したのですが… sort 関数を使用すると、文字列に対してのソートを 行うことがわかった。 @arr = (2, 44, 11, 45); @sorted_list = sort(@arr); print join(', ', @sorted_list); - 結果 - 11, 2, 44, 45 それで、整数に対してのソートを行うような Perl スクリプトを 書こうと調べてみると、以下のようなサンプルが見つかった。 @arr = (2, 40, 44, 23, 234, 44); sub by_number { if ($a < $b) { return -1; } elsif ($a == $b) { return 0; } elsif ($a > $b) { return 1; } } @
XPathを書いたときに、そのXPathがうまくマッチしてくれるかどうかを調べるのは少し面倒です。FirefoxにFirebug(いつの間にか日本語のページが…)が入っていればコマンドラインで$xを使って $x( '//span/ancestor::div[last()]' ) というように調べられますが、HTMLファイルにして読み込ませないといけないのと、Firefoxが勝手にtableとtrの間にtbodyを補完してしまうので //table/tr/td[last()] みたいなXPathはマッチしなくて不便です。 いままでperlのHTML::TreeBuilder::XPathを使って #!/usr/bin/perl use strict; use warnings; use HTML::TreeBuilder::XPath; my $tree = HTML::TreeBuilde
覚え書。 Perl版。 my @array = (0,1,2,3,4,5); my $value = splice @array, int rand @array , 1; PHP版。 <?php $array = array(0,1,2,3,4,5); $value = array_shift(array_splice($array,array_rand($array),1)); PHPのことだから一発で抽出できる関数あるもんだと思ってたけど無かったっぽい。 肝心なとこで関数無いんだよないつも・・・。 追記: ちょっと言葉足らずだったので補足。 配列からランダムで要素を”取得”したいわけではなく、”抽出”したいわけです。 つまり上記のソースを実行すると、 @array = (0,1,2,4,5); $value = 3; みたいな感じで元配列から抜き取るような結果になって欲しいと。 Li
勘違いしてしまうのしょうがないね。 また、ワーク変数にリファレンス値を代入後、デリファレンスすると元の値にアクセスが出来ます。 しかし、$_[0] を直接デリファレンスした $$_[0] では、元の値にアクセスが出来ません。 ワーク変数と$_[0]の中身は、同じリファレンスが入っているにも関わらず、そうなるのです(謎)。 Perlの関数引数 $_[0]の謎 - 燈明日記 元記事の現象とは下記のようなコードを書いた時の話ですが、 use strict; sub hoge { print $$_[0]; } my $str = 'aaa'; hoge(\$str); これを実行してもprintで何も出力されないというわけですね。 実はこれ、謎でもなんでもなくて単にデリファレンスの優先順位が配列参照よりも低いから起こってるだけです。 つまり上記のコードは@_の0番目の要素をスカラデリファレンスし
URIにアクセスできたけどエラーが返されたのか、そもそもアクセスできなかったのかを区別するのはどうすればいいのか、ということでちょっと悩まされた。 use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); my $res = $ua->get($url); my $msg = ($res->is_success) ? $res->content : $res->status_line; print "$msg\n"; タイムアウトした際は、status_line()が 500 read timeout になる、というだけでした。
ことの理由と出典をいつも忘れてしまうので,メモメモ。 if ($obj->isa('Huga')) { ...... } みたいなコードはよく使うんですが,$obj が bless されたオブジェクト(か,クラス名の文字列スカラー)じゃないとエラーを吐くので,一時期,以下のように書いてました。 if (UNIVERSAL::isa($obj, 'Huga')) { ...... } でもそれはイカーン,とどこかで読んだような気がして探してたら,「続・初めてのPerl 改訂版」の「14.2 オブジェクトの動作に関するテスト(pp.186-188)」に書いてありました。 しかし,これではオブジェクト指向メカニズムを否定することになり,それはそれで問題を起こします(→脚注)。 脚注 特に,Animal がカスタムの isa メソッドを持つ場合(中略),UNIVERSAL::isa を呼び出してし
僕はmap派かなぁ。 Catalystのソースを見ていたら二項演算子スライスを使ってハッシュの初期化をしていた - kopug memo スライス&x演算子使うやり方だとmy宣言と同時に書けないからあんまり好きくない。 my %hash = map { $_ => 1 } @key; # myと同時に書ける my %hash; @hash{ @key } = (1) x @key; # myと同時に書けない もっと言えば初期化の為に@keyとかを用意しなくて済むし。 my %hash = map { $_ => 1 } qw/a b c/; 予め%hashや@keyが存在しているような状況ならスライス&x演算子使ってやることもあるけどね(元記事のCatalystのコードがまさにそう)。 ただ、x演算子で気をつけないといけないのがリファレンスを使って初期化するとき。 use Data::Du
perl tips - Encodeを速く使う方法によると、find_encoding を使うと、Encode による文字変換が早くなるらしいということで実験してみました。 実験条件 use utf8 しない(use utf8 はトラブルが多すぎてやってられないので)。 変換前も変換後も utf8 フラグは立っていないこと。 実験用データとして、42KBのテキストファイル(EUC-JP, 日本語半分ぐらい)を用意。 ソースはこんな感じです。引数に処理したい euc-jp のテキストファイル名を与えます。 use strict; use Benchmark; use Encode; use Encode::Guess qw(euc-jp shiftjis iso-2022-jp); my $euc = join('', <>); my $utf = $euc; Encode::from_to
ref:404 Blog Not Found:perl tips - Encodeを速く使う方法 当然の話だけど、対象の文字列が長くなると、Encode::encode も、$e->encode も大差ない。 ちょっといじって試してみる。 use strict; use warnings; use Benchmark qw/cmpthese timethese/; use utf8; use Encode; use Jcode; use Unicode::Japanese; use Smart::Comments; my $str = join '', ( 'a' .. 'z', ( map { chr } ord('ぁ') .. ord('ん') ) ); $str = $str x shift if @ARGV; my $bytes = encode_utf8($str); my $u
2007年04月23日01:30 カテゴリLightweight LanguagesTips perl tips - Encodeを速く使う方法 はっきり言ってこれはフェアではない。 みかログ: ErlangとPerlの速度比較 Perl側は,Encodeが遅い. Encode::from_toがinplaceでコンバートしてしまうために,直前に文字列コピーがあるのも影響しているのかも なぜなら、Encode::from_to()は速度ではなく、安全性に最適化しているから。 そもそもはじめからUTF-8、それもutf8フラグがたっている文字列にfrom_toを使うのはばかげている。 for(my $i = 0; $i < 0xffff; $i++) { my $str2 = $str; Encode::from_to($str2, "UTF-8", "Shift_JIS"); } は単に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く