約 2,743,766 件
https://w.atwiki.jp/wiki8_levier/pages/4.html
Programming Perl Perlのページです。 テスト。
https://w.atwiki.jp/hitkik/pages/22.html
perlと日本語 http //homepage2.nifty.com/ttoyoshima/Perl/Perl.htm http //hardsoft.at.webry.info/200505/article_5.html http //perl.active-venture.com/pod/perljp.html perl 5.8以降はunicodeで動いているので、標準で漢字OKになった。 Winの場合は以下の宣言。 use encoding "cp932"; $/ = "\r\n"; requireの使い方 http //www.nishishi.com/perltips/script1.html モジュール: #! /usr/bin/perl package samplepackage; sub function1 { print "hogehoge\n"; } 1; packageでモジュール名を宣言 メインルーチン: require sample.cgi ; samplepackage function1(); useとrequireの違い http //tech.bayashi.net/pdmemo/use-require.html use: perl5以上 BEGIN, CHECK, INIT ルーチンが使える。 起動時に全て読み込んでコンパイルする require require文実行時にモジュール読み込み BEGINなど使えない。 連想配列 連想配列解説 http //tech.bayashi.net/pdmemo/variable.html 連想配列の連想配列などが可能。 配列の扱い方 コマンドなど http //santamartadotnet.hp.infoseek.co.jp/documents/perl/learningperl05.html %HOGE 連想配列変数 %HOGE 全体 $HOGE{ page } 連想配列変数 %HOGE の page をキーとする要素 %HOGE = ( key = value ); $HOGE{ key } = value ;と同列 %HOGE = (); %HOGE を空にします。 undef %HOGE; %HOGE を未定義値にします。 $a = scalar keys %HOGE; %HOGE の要素数を求めます。 空のハッシュを作成しておき、後から要素を追加 # 空のハッシュを作成 %numbers = (); # 要素を追加 $numbers{119} = "shoubou"; $numbers{911} = "rescue"; print $numbers{119}, "\n"; print $numbers{911}, "\n"; [実行結果] shoubou rescue keysやvaluesを用いると、ハッシュで使用されているキー、値の一覧を配列として取得 # 列挙 while ( ( $key, $value ) = each( %hash ) ) { print "$key $value\n"; } print "\n"; # キーの配列を取得 @keys = keys( %hash ); print "Keys "; foreach ( @keys ) { print "$_, "; } print "\n"; # 値の配列を取得 @values = values( %hash ); print "Values "; foreach ( @values ) { print "$_, "; } existsはハッシュに指定したキーが存在するかを確かめます。 deleteはキーと値の対をハッシュから削除します。 # 列挙 while ( ( $key, $value ) = each( %hash ) ) { print "$key $value\n"; } print "\n"; # キーが存在するかを確かめる if ( exists( $hash{"tempura"} ) ) { print "\"tempura\" exists in hash.\n"; } # キーと値の対を削除 delete $hash{"tempura"}; print "\"tempura\" was removed.\n"; # 列挙 while ( ( $key, $value ) = each( %hash ) ) { print "$key $value\n"; } # キーが存在するかを確かめる if ( !exists( $hash{"tempura"} ) ) { print "\"tempura\" doesn t exists in hash.\n"; } ハッシュを参照する # each関数による列挙 while ( ( $key, $value ) = each( %hash ) ) { print "$key $value\n"; } print "\n"; # キー配列による列挙 foreach ( keys( %hash ) ) { print "$_ $hash{$_}\n"; } 関数名 解説 delete ハッシュから指定したキーとその値を削除する。delete %HOGE{ key }; each ハッシュからキーとその値を取り出す。($key,$value) = each %HOGE; exists ハッシュに指定したキーが存在すれば真を返す。if(exists $HOGE{ key }){ delete $HOGE{ key }; } keys ハッシュ内の全てのキーを取り出す。@keylist = keys %HOGE; values ハッシュ内の全ての値を取り出す。@valuelist = value %HOGE; 連想配列の連想配列 %HOGE = ( Comic = { 夢の温度 = 南Q太 , バガボンド = 井上雄彦 }); print $HOGE{ Comic }{ バガボンド }; %hoge{ a } = %e; 配列の連想配列 @hoge{ a } = @f; 配列の扱い方 コマンドなど 以下広告
https://w.atwiki.jp/atwikimyj/pages/18.html
Catalystとは perl用のフレームワークである 必要な環境 perl5.8.6以上を必要とする(ヴァージョンにによっては違うかも)。 そのためレンタルサーバで古いバージョンだと動かない。
https://w.atwiki.jp/fmemo/pages/63.html
改行コードを変換するワンライナー Perlにおける真偽値 正規表現量指定子 コマンドラインオプション-eオプション -n オプション -p オプション -l オプション perldocの使い方 バイナリファイルの読み書き参考サイト エンディアン変換参考サイト 改行コードを変換するワンライナー Mac OS 9以前の改行コードである\rをUnix(Mac OS X)の改行コードである\nに変換したい場合。 $ perl -pe s/\r/\n/g inputfile outputfile Perlにおける真偽値 Perlにおける真偽値の定義は以下のとおり undef(未定義値)は偽 数値の0, 文字列の0,空の文字列""は偽 上記の3つ以外は真 use strict; use warnings; my $var1 = undef; my $var2 = 0; my $var3 = "0"; my $var4 = ""; my $var5 = 1; my $var6 = "aa"; if( $var1 ){ print "true\n"; }else{ print "false\n"; } if( $var2 ){ print "true\n"; }else{ print "false\n"; } if( $var3 ){ print "true\n"; }else{ print "false\n"; } if( $var4 ){ print "true\n"; }else{ print "false\n"; } if( $var5 ){ print "true\n"; }else{ print "false\n"; } if( $var6 ){ print "true\n"; }else{ print "false\n"; } このプログラムを実行させると、 $ perl truefalse.pl false false false false true true 正規表現 ^ 行頭 $ 行末 \w アルファベット(大文字小文字)、数字、アンダーバー。つまり[a-zA-Z_]と同値 \d 数字。[0-9]と同値 \s 空白文字(スペース、タブ、改行) . 改行以外の任意の文字 量指定子 + 1回以上の繰り返し * 0回以上の繰り返し ? 0回または1回の繰り返し コマンドラインオプション -eオプション その後にある文字列をプログラムだとして認識し、実行する。ワンライナーを書くときに使う。 $ perl -e print "hello\n" hello -n オプション プログラムの前後にwhile( ){ ... }があると解釈する。-eと組み合わせてワンライナーで使うことが多い。 -p オプション nオプションに似ているが、最後に評価した式を出力する。-eと組み合わせてワンライナーで使うことが多い。 -l オプション 改行を付加する。 perldocの使い方 perldocについて知りたい時 $ peldoc perldoc 関数を調べたい時 $ perldoc -f sort ソースをそのまま読みたい時 $ perldoc -u sort モジュールのパスを知りたい時 $ perldoc -l sort バイナリファイルの読み書き use strict; use warnings; my @names = ( Alice , Bob , Charlie ); my @nums = (10, 20, 30); open my $fh, , binary-test or die "file open error $!"; binmode $fh; for (my $i=0; $i 3; $i++){ my $buffer = pack "a8 l", $names[$i], $nums[$i]; print $fh $buffer; } close $fh; pack関数の書式は perldoc -f packで確認できる。 参考サイト http //www.geocities.jp/ky_webid/perl5/018.html エンディアン変換 use strict; use warnings; if(@ARGV != 3){ print "You need 3 arguments.\n"; print "\$ perl endian.pl inputfile outputfile num\n"; exit; } my ($ifile, $ofile, $num) = @ARGV; open my $in, , "$ifile"; open my $out, ,"$ofile"; if($num==2){ while(read($in,my $buf,2)){ print $out pack("n",unpack("v",$buf)); } }elsif($num==4){ while(read($in,my $buf,4)){ print $out pack("N",unpack("V",$buf)); } }else{ print "the 3rd argument should be 2 or 4.\n"; } 参考サイト http //garbagedays.dreamlog.jp/archives/4465827.html
https://w.atwiki.jp/volvicn55/pages/11.html
Perl Perl Perl Perl PerlPerlPerlPerl
https://w.atwiki.jp/atwikimyj/pages/51.html
携帯端末の環境変数の取得もモジュールで可能です。 perlコミュニティはすばらしいです。 HTTP-MobileAgent http //search.cpan.org/~kurihara/HTTP-MobileAgent-0.26/
https://w.atwiki.jp/installmaniax3/pages/32.html
Perlを構成する Active Perl を 展開する。 Perl を ISAPI(.cgi) で動作させる。 IIS の ハンドラマッピングに [Perl ISAPI]を追加する。 要求パス *.cgi モジュール IsapiModule 実行可能ファイル perl.exe(フルパス) 名前 Perl_ISAPI Perl を FastCGI で使う(.fcgi) Perl の FastCGI 拡張をインストールする。 PPM FCGI IIS の ハンドラマッピングに [Perl via FastCGI]を追加する。 要求パス *.fcgi モジュール FastCGI 実行可能ファイル perl.exe(フルパス) 名前 PERL_via_FastCGI
https://w.atwiki.jp/atwikimyj/pages/23.html
文字通りperlで実装するセッション管理。 <参考>CGI Session.pmでセッション管理 http //www.dab.hi-ho.ne.jp/sasa/biboroku/perl/session.html インストール linux上で [root@localhost] perl -MCPAN -e shell cpan install CGI session これで終わり。 利用 perlスクリプト内で use CGI Session qw/-ip_match/; #異なるipからのアクセスは認めない #Tutrial .podは -ip-match ,Session.pmは -ip_match .多分 -ip_match . my $session=CGI Session- new(undef,undef,{Directory= ./.session }); #セッションidの生成 .ディレクトリ.sessionは予め作っておく $session- expire( +1m ); #有効期限の設定.1分間 $session- param( name , john ); #セッション経由で引き渡す項目と値
https://w.atwiki.jp/external_storage/pages/16.html
UPDATE 2010年08月28日 (土) 22時12分14秒; Perl Version : Perl 5.8.9 ファイルレイアウト ファイルレイアウト cpan 初期設定 ActivePerl Version : Perl 5.10 ※主にActivePerl専用のことだけを書く。
https://w.atwiki.jp/fattencho/pages/15.html
Perl ワンライナー エンコード echo "@" | perl -ne s/([^\w ])/"%".unpack("H2",$1)/eg;s/ /\+/g;print;print "\n"; デコード perl -MURI Escape -wle print uri_unescape $ARGV[0] http //ja.wikipedia.org/wiki/%E3%81%93%E3%81%88%E9%83%A8 # perlでデーモン作成 #!/usr/local/bin/perl use strict; use warnings; my $PID; my $PID_FILE = "/home/fattencho/daemon.pid"; my $SLEEP_INTERVAL = 10; main(@ARGV); exit(0); sub main { my ($act) = @_; $act ||=""; if ($act eq "start"){ #daemonの起動 #複数の起動はできません if( get_pid_file() ){ print "$0 is already running\n"; return; } init(); action(); return; } if ($act eq "stop"){ #daemonの停止 my $pid = get_pid_file(); if(not defined $pid){ print "$0 is not running\n"; return; } #pid fileを削除すると、後でkillされます return del_pid_file(); } print "usage $0 [start|stop]\n"; return; } sub init { my $pid = fork; # Fork failure. if($pid 0){ exit -1; } # Fork success. elsif($pid){ exit 0; } #signal送信時に実行するmethod $SIG{INT} = $SIG{HUP} = $SIG{QUIT} = $SIG{KILL} = $SIG{TERM} = interrupt ; $PID = $$; set_pid_file($PID); } sub action { while(1) { sleep($SLEEP_INTERVAL); #pidファイルが削除されていれば、自分自身をkillします if (not get_pid_file() ){ kill $PID; return; } } } sub interrupt { my ($sig) = @_; $SIG{$sig} = IGNORE ; return del_pid_file(); } sub get_pid_file { #pid fileの名称とpidの取得 return undef if not -e $PID_FILE; open my $fh, $PID_FILE or die "can t open $PID_FILE $!"; my ($line) = $fh ; close $fh or die "can t close $PID_FILE $!"; my ($pid) = $line =~ /(\d+)/o; return ($PID_FILE,$pid); } sub get_pid_file { #pid fileの名称とpidの取得 return undef if not -e $PID_FILE; open my $fh, $PID_FILE or die "can t open $PID_FILE $!"; my ($line) = $fh ; close $fh or die "can t close $PID_FILE $!"; my ($pid) = $line =~ /(\d+)/o; return ($PID_FILE,$pid); } sub set_pid_file { #pid fileにpidを書き込み my ($process_id) = @_; open my $fh, " $PID_FILE" or die "can t open $PID_FILE $!"; print $fh $process_id; close $fh or die "can t close $PID_FILE $!"; } sub del_pid_file { unlink $PID_FILE or die "can t unlink $PID_FILE $!"; } 1;