エンジニアが発信する【Perl】の記事を集めました

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【Perl】

2012年02月05日

他所からコピペ

oopの前に構造化プログラミングの理解が先でしょって、誰が初期バージョン書いたかわからないperlのソース触ってて思った。まず、モジュール凝集度とか結合度とかいうやつ理解する。で、oo無しでは大変だ!てな仕事にかぎりoo使う。

2010年12月16日

[Shell]mv filename.{old,new} とは?

Linuxで使えるクレージーな小技コマンドいろいろ - IDEA*IDEA ? 百式管理人のライフハックブログ

mv filename.{old,new}

Linuxで使えるクレージーな小技コマンドいろいろ - IDEA*IDEA 〜 百式管理人のライフハックブログ

mvの機能だと勘違いする人がいるかも知れないので補足。

{}にカンマ区切りの文字列を入れとくと、シェルが{}前後の文字列をくっつけながら展開してくれるのです。ファイル名とか関係なく。

$ echo {a,b,c}
a b c

$ echo ^{a,b,c}$
^a$ ^b$ ^c$

スペースを入れると展開されないので

$ echo ^{a, b ,c}$
^{a, b ,c}$

その場合はエスケープすると良い。

$ echo ^{a,/\/i b/\/i ,c}$
^a$ ^ b $ ^c$

mv以外にも色々応用できますね!



例えば、

$ echo /usr/{local/,}bin/

とすると、

$ echo /usr/{local/,}bin/
/usr/local/bin/ /usr/bin/

と展開されるので、

$ echo /usr/{local/,}bin/perl*

のようにすれば、/usr/binと/usr/local/binに入ってる"perl"で始まるファイルの一覧を取得できます。

$ echo /usr/{local/,}bin/perl*
/usr/local/bin/perl /usr/local/bin/perl5.12.2 /usr/local/bin/perlbug /usr/local/bin/perldoc /usr/local/bin/perlivp /usr/local/bin/perlthanks /usr/bin/perl /usr/bin/perl5.8.8 /usr/bin/perlbug /usr/bin/perlcc /usr/bin/perlcritic /usr/bin/perldoc /usr/bin/perlivp /usr/bin/perltidy

便利だね!

2010年10月24日

ホームページがなくなってしまいそうなので移転・・

infoseekの無料ホームページを使っていたが、サービースが10月末でおわるようだ。
ちょっと困ったが、FC2の無料ホームページへ移転した。ただPerlが使えないので一部
変になっているそのうち治そう。

(infoseek)しゃれこうべのページ

(FC2)しゃれこうべのページ


2010年09月10日

[Perl]月名を月に変換

$mon = {
    Jan => 0,
    Feb => 1,
    Mar => 2,
    Apr => 3,
    May => 4,
    Jun => 5,
    Jul => 6,
    Aug => 7,
    Sep => 8,
    Oct => 9,
    Nov => 10,
    Dec => 11,
}->{$mon};

$mon = (index 'JanFebMarAprMayJunJulAugSepOctNovDec', $mon) / 3;

2010年03月25日

[Perl]Thunderbirdのabook.mabなどのわけ分からん内容のファイルはFile::Morkを使って復元できる

Thunderbirdのabook.mabなどのわけ分からん内容のファイルはFile::Morkを使って復元できる。

ところがFile-Mork-0.3でこんなエラーが出た。

Unknown encoding 'UTF-16$E3$82$84$E3$81$BE$E3$81$A0$E3$81$95$E3$82$93' at File/Mork.pm line 346

バイトオーダー判定の正規表現が"$BE"という文字列にマッチしてしまって、$self->{byte_order}がおかしくなる。

やっつけ修正したけど、これで合ってるかどうか知らんので自己責任で。

バグレポートはしてないので誰かもうちょっとマシなパッチ作ってレポっといて。

--- File/Mork.pm.orig   2010-03-25 13:14:48.065636000 +0900
+++ File/Mork.pm        2010-03-25 13:18:47.790343200 +0900
@@ -333,7 +333,7 @@
         }

         # recognize the byte order of UTF-16 encoding
-        if (! defined ($self->{byte_order}) && $val =~ m/(?:BE|LE)/) {
+        if (! defined ($self->{byte_order}) && $val =~ m/[^/\/i$](?:BE|LE)/) {
             $self->{byte_order} = $val;
         }

2010年03月11日

[Perl] Template-ToolkitでURI Unescape

URI Escapeするときはuriフィルタ(urlフィルタ)でいいんだけど、その逆のURI Unescapeのやり方が(TT標準内には)見つけられなかった。

のでCGI.pmにやらせてみた。

#! /usr/bin/perl
use Template;
Template->new->process(/\/i*DATA);

__DATA__
[%
    SET link = 'http://example.jp/wiki/%E3%83%86%E3%82%B9%E3%83%88';
    USE CGI('uri=' _ link);
    CGI.params.uri;
%]

実行結果

http://example.jp/wiki/テスト

注意:CGI.pmのUNICODE周りの問題で文字化けする可能性あり。(TT側で調整可能)

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【Perl】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA