useでライブラリを重複呼び出した場合
- 2008.10.24
package abc;use CGI;・・・略package def;use CGI; このようにuseで複数回モジュールを呼び出した場合はどうなるのか? どうやらPerlは内部でuseしたライブラリ名を記憶していて、同じモジュールをuseしない(2回目のuseは無視)ようになっているので、二カ所(またはそれ以上)で同じモジュールをuseしても、全く問題無い。
perl、 MySQL、オープンソース系、ウェブ系ネタ。なぜか鯖管メモがほとんどを占めている…
package abc;use CGI;・・・略package def;use CGI; このようにuseで複数回モジュールを呼び出した場合はどうなるのか? どうやらPerlは内部でuseしたライブラリ名を記憶していて、同じモジュールをuseしない(2回目のuseは無視)ようになっているので、二カ所(またはそれ以上)で同じモジュールをuseしても、全く問題無い。
$COUNT = $dbh->selectrow_array("SELECT COUNT(*) FROM `テーブル名` WHERE `カラム` = '条件'");
$sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth = $dbh->prepare( "$sql" ); $sth->execute(); $id = $sth->{mysql_insertid}; これで$idに「自分が追加した最新のauto_increment番号」が代入される ただし下記のようにdoでは使えない。 $sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth […]
SpeedyCGIの導入 # yum install perl-CGI-SpeedyCGI ※要rpmfogeの導入 概要:http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod MAXRUNSコマンドライン : -rN環境変数 : SPEEDY_MAXRUNSCGI::SpeedyCGI : MAXRUNSmod_speedycgi : SpeedyMaxrunsデフォルト値 : 0 (つまり上限なし)?500? ※説明:PerlインタープリタはN回実行すると、終了する。 例) #! […]
Apacheには、標準で「ab」(Apache Bench)というツールが付属している。abの構文は、 ab [options] URL のように、オプションとテストを実行するURLを指定する。 詳しい使い方は以下 http://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.html PERL(CGI)の処理時間を計測するには? ターミナルを立ち上げ、パスの前に「time」と打ち込むだけ。 たとえば、「./myProgram.pl」というPerlスクリプトの場合 $ time ./myProgram.pl real 0m3.093s u […]
htmlをeucやutf-8等の文字コードで作成する必要がある時(cgiで作成するなど)の場合、ブラウザが文字コードを読めない場合がある。 httpd.confに以下の記述があると.htmlのファイルには自動でヘッダが送られてしまう。 AddType "text/html; charset=Shift_JIS" .html #AddType "text/html; charset=Shift_JIS" .html↑#でコメントアウト コメントアウトする事でファイルのメタタグで指定が可能になる。
HTML::Mason というperlモジュールを検索中に発見。どうやらphpのようにhtml中にperlを埋め込んで使うらしい。 後で調べてみよう。てか、情報少なすぎなんだよな。。
参考URLhttp://www.tohoho-web.com/lng/199912/99120066.htm 以下のように4種類考えられる [ファイルの行数を得る方法] ALL : ファイル全体を変数に読み込んで、改行の数を数えるARRAY : ファイル全体を配列に読み込んで、配列の要素数を数えるSTEP : ファイルを一行ずつ読んで、行数を数えるWC : UNIX の wc コマンドを使う(wc --lines ファイル名) これらのベンチマークをとるスクリプトをhttp://www.aleph.co.jp/~fujiwara/perl/lc.plに置いてあります。 [行数を数える対象のファ […]
宣言していない変数を使用不可にする Perl では C のように変数を宣言する必要がないので必要性がもうひとつはっきりしません。 use strict; が宣言されていると、変数がmy で宣言したプライベート変数か、パッケージ名を含めて完全に記述された変数しか使えなくなります。 不正な変数名の使用によるクラッシュを避けるためです。 このようにコンパイルに影響をあたえるモジュールを pragmatic module といいます。 mod_perlやSpeedyCGIなんかを使う時に誤動作を防ぐためにuseしてプライベート変数化しておくのに便利かも
perlの正規表現などのマッチングを行うとエラーになる事がある。 エラーメッセージUnmatched [ in regex; marked by~ どうやらsjis(SHIFT-JIS)でのみ起こる現象のようだ。対象の文字列や変数の中に文字化けする文字(表や申など)があると起こる現象のようです。 このページが参考になりました。http://www.nishishi.com/blog/2006/02/unmatched_in_re.html