« 2003年02月 | 過去ログ一覧 | 2003年06月 »

2003-05-20 (Tue)

変数についての覚書

Perl での変数の取り扱いについて。

2 つの変数の入れ替え

($one, $two) = ($two, $one);

ハッシュを値でソートする

%Hash = (a => 200, b => 1200, c => 300);
@Keys = sort { $Hash{$a} <=> $Hash{$b} } keys %Hash;
foreach my $key (@Keys){ print "$key , $Hash{$key} \n"; }

ハッシュの要素数取得

$num = keys %Hash;

△トップ | コメント (0) | トラックバック(0)

正規表現

演算子やらメタ文字やら色々覚えなきゃいけない事が多い正規表現の解説。

文字クラス

-    範囲
^    先頭に置くとそれ以外にマッチ
/[01234567]/ 0~7 までの数字 1 文字にマッチ /[0-9\-]/ 数字 1 文字かマイナス文字 1 文字にマッチ /[^0-9]/ 数字以外の 1 文字にマッチ /[a-zA-Z]/ 英字 1 文字にマッチ /[0-9]+/ 1 文字以上の数字にマッチ

» 続きを読む...

△トップ | コメント (2) | トラックバック(0)

2003-05-21 (Wed)

ファイル演算子

Perl で取得出来るファイル演算子一覧。

-r    読み込み可能であれば
-w    書き込み可能であれば
-x    実行可能であれば
-o    実行ユーザーと所有者が同一であれば
-R    実行ユーザーでなく、実ユーザーで読み込み可能であれば
-W    実行ユーザーでなく、実ユーザーで書き込み可能であれば
-X    実行ユーザーでなく、実ユーザーで実行可能であれば
-O    実行ユーザーでなく、実ユーザーのものであれば
-e    存在すれば
-z    存在し、サイズが 0 であれば
-s    ファイルサイズを返す
-f    通常ファイルであれば
-d    ディレクトリであれば
-l    シンボリックリンクであれば
-p    名前付きパイプであれば
-S    ソケットであれば
-T    テキストファイルであれば
-B    バイナリファイルであれば
-b    ブロック型の特殊ファイルであれば
-c    キャラクタ型の特殊ファイルであれば
-u    setuid ビットがセットされていれば
-g    setgif ビットがセットされていれば
-k    sticky ビットがセットされていれば
-M    最終更新時刻からの日数
-A    最終アクセス時刻からの日数
-C    最終 i ノード変更時刻からの日数
-t    ファイルハンドルが tty としてオープンされていれば

△トップ | コメント (0) | トラックバック(0)

2003-05-22 (Thu)

CGI 経由のエラー出力

CGI 経由でも画面にエラーを表示してくれます。

use CGI::Carp qw(fatalsToBrowser);

他にも KCatch という便利そうなものもあります。

△トップ | コメント (0) | トラックバック(0)

stat 関数の詳細

Perl の stat 関数で得られる情報の一覧。

0       デバイス情報
1       i ノード番号
2       タイプ、パーミッション
3       対象ファイルのリンク数
4       オーナー ID
5       グループ ID
6       デバイス識別子
7       ファイルサイズ (byte)
8       最終アクセス時刻
9       最終更新時刻
10      最終 i ノード変更時刻
11      最適ブロックサイズ
12      割当てられているブロック数

△トップ | コメント (0) | トラックバック(0)

2003-05-24 (Sat)

print sprintf のフォーマット

%c     文字
%s     文字列
%d     整数 10進数
%o     符号なし  8進数
%u     符号なし 10進数
%x     符号なし 16進数
%lo     8進数 (long)
%ld    10進数 (long)
%lu    符号なし10進数 (long)
%lx    16進数 (long)
%f     浮動小数点

△トップ | コメント (0) | トラックバック(0)

Perl で切り上げの計算をする

1 を足してから int します。負の値や整数に対しては、そのまま int です。

$one   = ceil(19.1);  # $one   = 20
$two   = ceil(-30.5); # $two   = 30
$three = ceil(5);     # $three = 5
sub ceil { my $var = shift; my $a = 0; $a = 1 if($var > 0 and $var != int($var)); return int($var + $a); }

△トップ | コメント (0) | トラックバック(0)

2003-05-25 (Sun)

Perl2Exe

Perl2Exe なんて使ってる人はあんまり居ないようで、情報が少ないので紹介してみます。自分も全然使ってませんが、こういうのもあるんだよって事で。

Perl2Exe は、Perl で作ったファイルを EXE ファイルにしてしまおうという何とも素晴らしいものです。EXE の実行だけだったら、Perl をインストールしてある必要はありませんからね。

シェアウェアらしく、料金を払わない場合は出来上がった EXE を実行した時に広告メッセージが表示され、使用期間も30日間のようです。

» 続きを読む...

△トップ | コメント (7) | トラックバック(1)

Perl で四捨五入の計算をする

0.5 を足してから int します。負の値に対しては 0.5 引いてから int です。

$one = round(190.5); # $one = 191
$two = round(-30.2); # $two = -30
sub round { my $var = shift; my $a = ($var > 0) ? 0.5 : -0.5; return int($var + $a); }

△トップ | コメント (0) | トラックバック(0)

2003-05-26 (Mon)

Benchmark

Perl の処理速度を比較するために使用するモジュールです。複数の処理の処理速度を求めて比較できます。

URL デコードの二つを例にします。「Perlの小部屋」という文字列をデコードしています。

#! /usr/bin/perl
use Benchmark;
$count = 100000; $value = "Perl%E3%81%AE%E5%B0%8F%E9%83%A8%E5%B1%8B";
timethese($count, {'TEST1' => '&test1;', 'TEST2' => '&test2;', });
sub test1 { $str = $value; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1 )/eg; }
sub test2 { $str = $value; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1) )/eg; }

» 続きを読む...

△トップ | コメント (0) | トラックバック(0)

PerlMagick

ImageMagick の Perl 用フロントエンド(?)です。画像を色々といじれます。

まず、example.jpg のサイズを半分にします。Read で読み込み、Minify でサイズ変更、Write で書き出しです。

#! /usr/bin/perl
use Image::Magick;
$img_file = "example.jpg";
$i = Image::Magick->new; $i->Read($img_file); $i->Minify(); $i->Write("$img_file");

» 続きを読む...

△トップ | コメント (2) | トラックバック(0)

 
Copyright (C) Kyosuke Takayama, Some rights reserved.