約 2,967,531 件
https://w.atwiki.jp/atwikimyj/pages/86.html
しらぎく実験室 雑記帳 http //www.marguerite.jp/Nihongo/Labo/Temp/ModPerl.html#config_2 mod_perl2の貴重な体験的TIPSが載っております。 mod_perl 2.0.2 へのマイグレーション http //d.hatena.ne.jp/naoya/20060108/1136692447 はてなの伊藤さんのページ。mod_perl1、1.99、2の違いと、 2への移行の話が載っています。
https://w.atwiki.jp/nanige/pages/16.html
mod_perl2 Documents を極少しずつ和訳中です。
https://w.atwiki.jp/atwikimyj/pages/25.html
参考 [http //d.hatena.ne.jp/ZIGOROu/20061105/1162736838] CPAN [http //search.cpan.org/~mschilli/Log-Log4perl-1.10...] use宣言 use Catalyst Log Log4perl; ※Catalystのプラグインではない。 * log吐き出し先ファイルを設定(confのパーミッションを775にしてね) PACKAGE- log(Catalyst Log Log4perl- new("/var/www/vhosts/hoge.net/conf/log4perl.conf")); #PACKAGE setup; わからないけどsetupのメソッドを使うとエラーになる(なぜかDB内のUserテーブルが読めない!というエラー なんなんだ。。) エラーログにエラーが出る Log Log4perl configuration looks suspicious No loggers defined at /usr/local/lib/perl5/site_perl/5.8.8/Log/Log4perl/Config.pm line 308., referer http //hoge.net/user/Login/ ロガーを定義していないと思う、、とかわいいログが残っている。 confに何もかかれていない。でもエラーログにはいつもよりいろんなログが 出るようになった。 これでいいような。。。confの意味は?
https://w.atwiki.jp/syohonosyoho/pages/18.html
[部分編集] perl installinstall-PAR-ppmでno missing error(参考) exe化コマンド(pp) GUI メモとりあえず 日本語表示(参考)utf-8フラグについて split-第二引数に@は使えない。使うと要素数を返す。 wait key 配列の要素数(参考 print 36進数<=>10進数 (参考) コメントアウト(複数行)参考 論理演算子 ENDサブルーチン(スクリプト終了時に実行)参考 useとrequireの違い 重複値の削除 マッチングー正規表現ー ファイル操作 GUI入門 メモ ファイルを開くダイアログ(参考) Textfield XML デバッグモード Mechanize文字化け対策 install install-PAR- exeファイルを作りたいので「perl exe」で検索 参考 の通り行うとuse Encodeもつかえた。(^^) ActivePerlの各Ver PARのVer 以下は試行錯誤の残骸 +... こことここをみてinstall[[ここ http //nabe.blog.abk.nu/par510]]はうまくいかない。PAR実行時にperl510.dllがなんたらどうやらuse Encode使うと出るエラーのよう 追記 なんだかWin32 GUIモジュールを使ったスクリプトがexe化した後実行エラーになる。(他のモジュールもいくつかアウト) そこでActivePerl5.10に乗り換え。なんか色々ごちゃごちゃして何やったか憶えてないけど、とりあえずWin32 GUIは動いた(しかしmixi_exportはperl510.dllがないと言われる) やったことMinGWをインストール。PATHにC \MinGW\bin;追加。再起動。 PPM(GUI)でCompress Raw Zlibをupdate(pp実行時にCant loadと言われたので) PARはhttp //downloads.activestate.com/ActivePerl/Windows/をみて、Active Perlのverにあったものを use Encodeが使えないのは不便なのでActivePerl再インストール。 そしたらpp使えなくなった(涙 5.8.9入れたら使えた。でもuse Encodeは使えない ppmでno missing error(参考) ppm search xxxx で出てきた数字を ppm install 数字 exe化コマンド(pp) pp -o hoge.exe hoge.pl cui非表示 pp --gui -o hoge.exe hoge.pl 注意:exe化する際packegeをrequireするときは条件文の中ではしない するとlibに含まれない。ならuseにしてしまえばいいとも思う。 GUI ここの通り行う。 THE GUI LOFTのページリンクだけここに変更 GUI TEST メモ [部分編集] とりあえず とほほのperl入門 Perl基礎入門 Perl講座 日本語表示(参考) 文頭で use utf8; binmode STDIN, " encoding(cp932)"; binmode STDOUT, " encoding(cp932)"; ※binmodeはPARで作ったEXEがうまく動かない 追記 useEncodeを行うとPARで出来たexeが動かない ただしGUI上ではこれはうまく動かない GUI Labelは use utf8;を使わない。 ListBoxでは decode( charaset ,$string); ※入力時 print encode( charaset ,$string); ※出力時 charasetはwin上ではcp932が多いように思う。 がコマンドプロンプトでchcpで確認する。 ここの方がわかりやすいかも utf-8フラグについて ここ split-第二引数に@は使えない。使うと要素数を返す。 @var=split(/nanika/,$list[i]) wait key $wait= STDIN ;#STDINは省略可能 配列の要素数(参考 # 最後の添字を取得(この場合は2。配列が空の場合は-1) $num = $#hoge; # 要素数を取得(この場合は3。配列が空の場合は0) $num = @hoge; print 変数の中身を出力するときは””(ダブルクォーテーション)で囲む print "@hoge" ----@hoge=(1,2)なら12と出力 変数の要素数を出力するときは’’(シングルクォーテーション)で囲む print @hoge ----@hoge=(1,2)なら2と出力 文字列を連結する時は「.」を使う print "$a"."$b" 36進数<=>10進数 (参考) +... use strict; my $base_str = "0123456789abcdefghijklmnopqrstuvwxyz"; my $base_36 = convert_36(1234567); print "$base_36\n"; my $base_10 = convert_10($base_36); print "$base_10\n"; sub convert_36 { my $number = shift; my @work; while ($number 0) { unshift @work, substr($base_str, $number % 36, 1); $number = int($number / 36); } return join( , @work); } sub convert_10 { my @work = reverse split //, shift; my $number; foreach my $idx (0 .. $#work) { $number += index($base_str, $work[$idx]) * (36 ** $idx); } return $number; } コメントアウト(複数行)参考 print "ここは実行されます。\n"; =pod ここはコメント行になります。 ここもコメント行になります。 =cut print "ここも実行されます。\n"; 論理演算子 ストリングの比較に==は使えない。eqを使う。 ENDサブルーチン(スクリプト終了時に実行)参考 END { print "END!"; } useとrequireの違い ココ メモリの使用量が~とかあるけど、気にしないなら全部useでいいんじゃないだろうか? 重複値の削除 ここ 簡単なのは my @data = qw(aa dd bb cc dd cc bb aa); my %uniq = map {$_ = 1} @data; ※配列の要素をkeyとしてkeyの要素 my @data2_1 = keys %uniq; を1とする(同じkeyは上書き?されて消える) マッチングー正規表現ー こことか 数字のみの文字列抜き出し =~ m/^[0-9]+$/ ファイル操作 ファイルの日本語読み込み(参考)読み込むファイルがUTF-8で書かれているなら、次のようにopenで指定する。 open(FH, " utf8", $filename); 読み込むファイルがshift-jisなど、UTF-8以外のコードで書かれているなら、次のようにencodingをopenで用いて指定する。 pen(FH, " encoding(shiftjis)", $filename); 行数を数える ファイル読み込み後$.に格納されている(参考の中から最後のを参照。) open(FILE, hoge ) or die; print $. . 行\n ; close(FILE) [部分編集] GUI 入門 ここをみながら色々と リファレンス1 2 3 デモ(sample)-これが一番参考になるかもコマンドプロンプトで~/Perl/site/lib/Win32/GUI/demosに移動(デフォルトの場合) 以下実行 win32-gui-demos メモ nameを大文字から始めるとボタンのCheckが参照できずうまくいかない ファイルを開くダイアログ(参考) +... use strict; use warnings; use utf8; use Win32 GUI(); my $file = "\0" . " " x 256; my $ret = Win32 GUI GetOpenFileName( -title = "Win32 GUI GetOpenFileName test", -file = "\0" . " " x 256, -filter = [ "Text documents (*.txt)" = "*.txt", "Perl stuff (*.pl, *.pm)" = "*.pl;*.pm", "All files", "*.*", ], ); if($ret) { print "GetOpenFileName returned $ret \n"; } else { if(GUI CommDlgExtendedError()) { print "ERROR. CommDlgExtendedError is ", GUI CommDlgExtendedError(), "\n"; } else { print "You cancelled.\n"; } } Textfield GetStringは使えず、Text()でGet&Setができる [部分編集] XML XML Simple とりあえずココとかココとか XML treePP ココ デバッグモード コマンドプロンプトで以下実行(参考) perl -d hoge.pl Mechanize 参考 文字化け対策 ここ
https://w.atwiki.jp/atwikimyj/pages/95.html
FastCGIとはそもそも何か? FastCGIとは仕様を指す言葉で、アプリケーションそのもの ではない。 perl等のインタプリンタ言語の場合、CGIで読み込むたびに コンパイルを行う必要がある。そのコンパイル後のコードを メモリに常駐させてコンパイル処理時間やコストを節約する ことが可能。同じような機能を持つものとしてmod_perlが あるがこれはApache内でperlのコードを保持するが、FastCGI はapacheなどのwebサーバとは別にプロセスを用意し、そこ にコードを保持する。 ゆえにapache以外のwebサーバでも使用可能。 mod_perl2とどっちがいいの? mod_perl(2)とFastCGIどちらを使うか迷うところだが、 FastCGIを使う利点としては mod_perlのようにapacheに強く依存しない Apache以外でも使える デメリットとしては mod_perlの場合はApacheと連携していろいろ可能 (もともとのmod_perlの意義はここにあるらしい) ドキュメントや情報がmod_perlよりが少ない、、 インストール・環境構築 インストールは以下のように行う (1)Fast_CGIアプリケーションをインストール {{ # cd /usr/local/src # wget http //www.fastcgi.com/dist/fcgi.tar.gz # tar xvfz fcgi-2.4.0.tar.gz # cd fcgi-2.4.0 # ./configure # make # make check # make install }} (2)FastCGIのためのPerlモジュールもインストール {{ perl -MCPAN -e install FCGI perl -MCPAN -e install CGI Fast }} (3)Apache用のモジュールもインストール {{{ # wget http //jaist.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.2.tgz # xvzf mod_fcgid.2.2.tgz # cd mod_fcgid.2.2 このディレクトリ内にある設定ファイルを書き換える。 {{{ # vi Makefile }}} 以下のような箇所を、実際のapache2のパスに書き換える {{{ #top_dir = /usr/local/apache2 top_dir = /usr/lib/httpd }}} ESC , wq で保存してから {{{ # make # make install }}} 完了。
https://w.atwiki.jp/honeybe/pages/19.html
perlTips配列の要素数を取る。 正規表現で置換 日付計算:月末日を算出する。 外部プログラムを実行する。 参考URL なにかあればどうぞ perl Tips 配列の要素数を取る。 print @hoge; 配列変数(@hoge)を参照すれば配列の要素数が分かる。 引数チェックなどに使用する。 if (@ARGV 2) { print "Usage hoge.pl hoge moge\n"; exit; } 正規表現で置換 $hoge =~ s/[\/ ]/-/g $hoge内の/と を-に置き換える。 s/で置換開始。 最後の/後はオプション。代表的なオプションは下記。g 繰り返し。可能な限りマッチさせ、置換する。 i 大文字小文字の区別をしない。 日付計算:月末日を算出する。 http //www.futomi.com/subroutine/getlastday.html 参照。 外部プログラムを実行する。 exec system `(backtick演算子) $result = `ls -la /tmp/` 参考URL http //www.site-cooler.com/kwl/perl/ http //www.stackasterisk.jp/tech/program/perl01_01.jsp なにかあればどうぞ 名前 コメント
https://w.atwiki.jp/perseidcross/pages/12.html
perlコマンド c プログラムの構文チェック d デバッガでスクリプトを実行 e プロンプトからスクリプトを入力 h オプションの一覧を表示 v Perlのバージョンを表示 w 警告を表示 日本語対応にする方法 encodin
https://w.atwiki.jp/takedaz/pages/13.html
ダウンロード 公式 インストール 任意の場所へ解凍 設定 perl.exeへパスを通す
https://w.atwiki.jp/atwikimyj/pages/92.html
mod_perl2がめでたく起動し、スクリプトが動作するようになって、 面倒だなと思うのが、httpdのrestart。 スクリプトを直すたびに $ apachectrl restart をしていたが、そんなわけないよな、と思い、調べる。 Apache2 Reload というのを使えばいいらしい。 しかし例外が、、 Catalystとの相性が悪く、使えないらしい。 実際試しても使えない。 対処策を探すと以下のような方法が。 holidays-l開発ブログ [Perl][Catalyst][Apache]CatalystアプリケーションでApache2 Reloadを使えるようにする方法CommentsAdd Star http //d.hatena.ne.jp/holidays-l/20060902/p2 これでもエラーは変わらず。
https://w.atwiki.jp/tmogmni/pages/29.html
split関数 smtpメールを送ってみる did not return a true value exec関数とsystem関数 配列かどうか調べる split関数 「1234567890,hogehoge」というカンマ区切り文字列をスプリットする。split_test.plというファイル名で作成。 #!/usr/bin/perl $mojiretu = 1234567890,hogehoge ; @ret = split(/,/ , $mojiretu); print $ret[0]."と".$ret[1]."に分割されました\n"; 上記スクリプトを実行してみる。 # perl split_test.pl 1234567890とhogehogeに分割されました 「1234567890|hogehoge」という「|」で分割されている場合は、エスケープしなくてはならない。 #!/usr/bin/perl $mojiretu = 1234567890|hogehoge ; @ret = split(/\|/ , $mojiretu); print $ret[0]."と".$ret[1]."に分割されました\n"; smtpメールを送ってみる #!/usr/bin/perl # Net SMTPを使うための宣言 use Net SMTP; # メールサーバ名(IPだとだめ?) $mail_srv_name = localhost ; # FROM句 $mail_from = from@hogehoge.com ; # TO句 $mail_to = to@hogehoge.com ; # Net SMTP インスタンス生成 $smtp = Net SMTP- new($mail_srv_name); # 試しに2通送ってみる # 1通目 $smtp- mail($mail_from); $smtp- to($mail_to); $smtp- data(); $smtp- datasend("From ".$mail_from."\n"); $smtp- datasend("To ".$mail_to."\n"); $smtp- datasend("Subject test1\n"); $smtp- datasend("Message-ID 123456789\@hogehoge.com \n"); $smtp- datasend("\n"); $smtp- datasend("this is test mail no1 \n"); $smtp- dataend(); # 2通目 $smtp- mail($mail_from); $smtp- to($mail_to); $smtp- data(); $smtp- datasend("From ".$mail_from."\n"); $smtp- datasend("To ".$mail_to."\n"); $smtp- datasend("Subject test2\n"); $smtp- datasend("Message-ID 987654321\@hogehoge.com \n"); $smtp- datasend("\n"); $smtp- datasend("this is test mail no1 \n"); $smtp- dataend(); # smtp インスタンス破棄 $smtp- quit; did not return a true value requireやuseされたファイルは、正常にコンパイルされ、初期化コードを正しく実行したことを示すために、真を返さなければならない。こういったファイルは、 1; で終わるようにするのが習慣らしい。1を返さないと表題のような「did not return a true value」のエラーが出る。以下例。 【ファイル構成】 hoge.pl dir/ | +--functions.pl 【hoge.pl】 #!/usr/bin/perl require "dir/functions.pl" print sub1; 【functions.pl】 #!/usr/bin/perl sub sub1() { return "hogehoge\n"; } # これいれないとhoge.plを実行した際にエラーになる 1; 実行 perl hoge.pl hogehoge exec関数とsystem関数 exec関数のテストコード [exectest.pl] #!/usr/bin/perl my $command1 = "echo hoge1"; my $command1 = "echo hoge2"; exec($command1); exec($command2); print "終了\n"; exectest.plの実行結果 # perl exectest.pl hoge1 ひとつめのexecコマンドしか実行されない。制御がperl側に戻ってこないため? system関数のテストコード [systemtest.pl] #!/usr/bin/perl my $command1 = "echo hoge1"; my $command1 = "echo hoge2"; system($command1); system($command2); print "終了\n"; systemtest.plの実行結果 # perl systemtest.pl hoge1 hoge2 終了 echoコマンドを二つ実行したあとで、perlのprintコマンドも実行される。(制御がperl側に戻ってくる) 配列かどうか調べる 未検証だけどメモ。 if (ref($data) eq ARRAY ) { # 配列であった } else { # 配列でなかった }