2006-01-01から1年間の記事一覧

GMailのメールを受信するスクリプト

Mail::POP3Clientモジュールを使ってGMailのメールボックスよりメール受信をするPerlプログラムを書く。 このモジュールはSSL上のPOP3にも対応していてくれているので便利だ。 (GMailでPOP受信する際はSSLが必須であるようだ) インスタンス作成時にUSESSL…

改行コードを取る(LF/CR問わず)

$temp =~ s/[\012\015]//g;

cpanの使い方

perl -MCPAN -e shell sudo perl -MCPAN -e install Unicode::String

apacheの設定ファイルの、コメント部分を省いて表示する

cat /usr/local/apache2/conf/httpd.conf | perl -lne 'print "$_" if /^[^#]/'

ファイル・ディレクトリ一覧を取得

my $path='/var/www/svn/rep'; my @excludelist = qw(dt3_temp dt3_temp2); my @files = (); my %excludelist ; foreach (@excludelist){ $excludelist{$_} = 'true'; } chdir($path); @files = ; foreach my $file (@files){ if(-d $file && !exists($exclu…

ファイル内の文字列を置換する

パイプ動作オプション-p、上書きオプション-iを指定すると、引数で指定 されたすべてのファイルに対する置換実行を行える。 以下の例は、カレントディレクトリのMakefile中のCFLAGS=という行を CFLAGS=-g -O2で置き換える。 % perl -pi -e 's,^(CFLAGS\s*=\s…

日付の妥当性チェック

use Date::Manip qw(ParseDate);my $datestring = '20050229'; # 日付として解析できる文字列であればなんでもよい if(!ParseDate($datestring){ #不正な日付の時の処理 }

ある文字列のMD5ハッシュを得る

my $source = 'hogehoge';#文字列 use Digest::MD5 qw(md5_hex); my $md5 = md5_hex($source);

例外処理をきちんと行う。

eval{ #ここに、例外発生する可能性のある処理を記述する。 !system('mkdir /root') or die; my_subroutine();#サブルーチン中で例外が起こったらdieする }; if($@ ne ''){#例外を捕捉する。 die "error in eval:$@\n"; }

先月の1日〜末日までの日付を得る。

use Date::Calc qw(Add_Delta_YMD); my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()); $mon = $mon + 1; $year = $year + 1900; ($sy,$sm,$sd) = Add_Delta_YMD($year,$mon,1,0,-1,0); ($ey,$em,$ed) = Add_Delta_YM…

ある文字列の文字コードを判別する。

use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; #(文字列が短いと正確な判定が出来ないことがある) my $enc = guess_encoding($str); print "encoding is ", $enc->name, "\n";

ある文字列が、UTF-8フラグが立っているかどうかを判定

use Encode; print Encode::is_utf8($str) ? 'UTF-8 Flag' : 'not UTF-8 Flag';

2バイト文字列の外部コード→外部コード変換

use Encode; #$strをコード変換する(代入不要) Encode::from_to($str, $fromenc, $toenc);

2バイト文字列の内部コード→外部コード変換

use Encode; $str = Encode::encode($toenc,$str);

2バイト文字列の外部コード→内部コード変換

use Encode; $str = Encode::decode($fromenc,$str);

ファイルからの読み込み

open(FILEIN,"; close(FILEIN); #$contents = join('',@contents); #contentsは内部コード文字列

ファイルへの書き出し

#$strは内部コード文字列 open(FILEOUT,">:encoding(Shift_JIS)",$filename); #または open(FILEOUT,"> $filename"); print FILEOUT $str; close(FILEOUT);

リスト、ハッシュ、リファレンスのダンプを出力する

use Data::Dumper; open(FILEOUT,">:encoding(Shift_JIS)","logfile.txt"); print FILEOUT Dumper($reference); close(FILEOUT);

sprintf

$str = sprintf("num:%02d",$num);

日付の加減算を行う

use Date::Calc qw(Add_Delta_YMD); my ($year,$month,$day) = Add_Delta_YMD($year,$month,$day,$Dy,$Dm,$Dd);

.ユニークなIDナンバーを生成する(システム時間+プロセスIDの15桁)

my $uniqueid = sprintf("%010d",time()).sprintf("%05d",$$);

HTMLを表示する

print EOD"; Content-type: text/html;CHARSET=Shift_JIS$html EOD xmlの場合はこんな感じ print EOD"; Content-Type: text/xml Accept-ranges: bytes$xml EOD

検索パスを追加する

BEGIN {unshift(@INC,'/var/www/html/hogehoge/cgi-bin')};

入力パラメータを読む

my ($param1,$param2) = @ARGV;

現在の「年」「月」「日」「曜日」を得る

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()); $mon = $mon + 1; $year = $year + 1900;

CGIのリダイレクト

print "Location: http://hogehoge.jp/index.html\n\n";

CGIモジュールを使ってCGIパラメータを読み込む

use CGI; my $query = new CGI; my %param = $query->Vars;

標準入力からデータを読み込む

my $val = '';#ここに入力データが入る chop($val = );

ヒアドキュメント

$val = EOD"; EOD

一時的にあるディレクトリにコマンド実行のパスを通したい

コマンド実行可能なパスを追加する export PATH=/usr/share/ssl/misc:$PATH