Perl
-X FILEHANDLE -X EXPR -X A file test, where X is one of the letters listed below. This unary operator takes one argument, either a filename or a filehandle, and tests the associated file to see if something is true about it. If the argumen…
my $array_ref = [ ^---{id => 1, name => 'hoge', atk => 5, def => 8, hp => 10}, ^---{id => 2, name => 'fuga', atk => 6, def => 9, hp => 13}, ^---{id => 3, name => 'foo', atk => 7, def => 10, hp => 18}, ^---{id => 4, name => 'aaa', atk => 8,…
open FH, ">data.dat" or die; print FH $data; close FH; 注意点は2点 1. or を使う. (|| では優先度が高すぎるので, ">data.dat"が真なら(この場合必ず真)dieしない.) 2. ">data.dat" という形式. (">", "data.dat" の場合, or はどこと比較していいかわ…
SUPER擬似クラスは, ベースクラスのことを指すのだそうです. use base qw (Hoge::Fuga::Base);~~ ry) ~~sub new { my ($class, $args) = @_; ~~ ry) ~~ my $obj = $class->SUPER::new(\%new_args); ~~ ry) ~~} などとするときのSUPER::new は Hoge::Fuga::Ba…
while (条件式) 条件式が真なら常に実行. よって, while(1) while(@array) とかやると, ()内は常に真なので, 無限ループ. foreach () 配列全体やリスト処理をするためのもの. ()内から値のリストを受け取り, それぞれの値に対して一回ずつコードのブロックを…
否定演算子 (!) は 0 とか undef が義, あとは真. defined は undef 以外は真.hash要素の存在確認は, exist exists $math_scores{$key} Ref. http://fleur.hio.jp/perldoc/mix/pod/perl5100delta.mix.html http://d.hatena.ne.jp/perlcodesample/20080213/12…
use strict;$hoge = undef;if ($hoge == 0) { print "fuga\n"; }if ($hoge eq '') { print "foo\n"; } これ, use strict してても実行すると, fuga foo ってでます. $hoge が 数字とか文字とかと比較されると, Perl は勝手に気を使って, 数字っぽく ないしは…
FormValidator::Simple あたりで, { p => ['INT']} を受け取る. これはテンプレの href にページ数とともに送られてくる.こいつを受け取り, そのページ数にあったデータをテーブルから取ってくる.1ページあたりの表示件数は予め決めておき(今回は5件とする),…
if (($inserted_hogehoge == 1) && $inserted_fugafuga == $NUMBER) { return 1; } else { return undef; } 三項演算子で書くと, return ($inserted_hogehoge == 1) && ($inserted_fugafuga == $NUMBER) ? 1 : undef;
幾つかの要素を持つハッシュリファレンスを複数個要素に持つ配列リファレンス(ここでは $fuga1, $fuga2)を, 順番を崩さず各ハッシュリファレンス同士をマージしたい時, for文を使うとちょっと冗長になってしまいました. my $fuga_number = scalar(@$fuga1); …
Perl の配列, my @list = 'a' .. 'z'; があったとき, foreach my $i (0 .. $#list) で配列の要素数分まわせます. scalar は配列の要素数を返すのですが, こちらは配列要素に振られた番号の最大値を返すんですかね. Ref. http://www12.ocn.ne.jp/~kumo/allcom…
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator, root@localdomain and inform them of the time the error occurred, and anythi…
ハッシュのリファレンス同士をマージさせるには, CPAN モジュールの Hash::Merge を使うと便利です.ただし, Hash::Merge を使わなくても数行でいけます. ## $hashref1 に $hashref1 をマージする. my $hash1 = +{}; my $hash2 = +{};my @array = keys %$hash…
文字コード確認. $ echo $LANG 一時的に文字コード変更. $ export LANG=ja_JP.UTF-8 デフォルト値を設定するときは, /etc/sysconfig/i18n を変更. 例:LANG環境変数のデフォ値を ja_JP.eucjp に設定する。 $ sudo vi /etc/sysconfig/i18n して LANG="ja_JP.e…
自分用に引用メモ. __PACKAGE__ は自分の属するパッケージのパッケージ名を取得できます. 例えばこんな感じ. __PACKAGE__->dbh_keys(+{ master => $_::DB_HOGE_W, slave => $_::DB_HOGE_R, slave_for_backup => $_::DB_HOGE_BAK, }); Ref. http://d.hatena.n…
MSG:DBD::mysql::st execute failed: called with 10 bind variables when 0 are needed at .. →原因は "(ダブルクオーテーション) と '(シングルクォーテーション) の違いです. 例えば, $hoge を "(ダブルクオーテーション)でくくると, $hoge の中身が展開…
■警告表示 [例] use Carp qw(croak); ## 中略 ## croak('set_date の引数には、24以上は取れません。') if $time_difference >= 24; ■クラスなど クラス ... 専門領域. オブジェクト ... クラスの使いっ走り. パッケージ = クラス パッケージのサブルーチン …
デフォルトのモジュールのインストール先を指定 ~/extlib perlにライブラリの検索pathを指定 ~/extlib/lib/perl5等 追加したら $ source .bash_profile .bash_profile 等に以下を追加する. export PERL_CPANM_OPT="--local-lib=~/extlib" export PERL5LIB="$…
Can't locate FormValidator/Simple.pm in @INC モジュールがデフォルトで設定してあるパスに配備されていないと起こるエラーのようです.sudo cpanm [module_name] でインストールしなおしたらいけました. Ref. http://www.devdaily.com/blog/post/perl/perl…
CPAN::shell は下記理由などにより新参者には色々と面倒なので、 cpanminusを導入します。 設定が面倒 動作が遅い(cpanmと比較して) 多くのメモリが必要(制約のきついレンタルサーバで使うのは無理) 依存するモジュールが多い 基本root権限が必要 ## install…
(?:) グループ化しない括弧を表します。正規表現で使う () は、 1.正規表現をグループ化し、後で\n, $n などで参照する 2.(A|B) などのようにまたはということを意味する ときなどに使われます。で、(?:) というのは後者で使うよ、ということを明示した…
忘備メモです。モジュールを書くときは最初に、 package Hoge::Fuga ですが、モジュール名の努力目標である、最初の文字は大文字ね、とはことなり、 "package" こいつは "Package" と大文字にしたのでは怒られます。 Can't locate object method "Package" v…
これちょいと注意なのが、 ブラウザ上でしか動作確認できません。シェルで perl hoge.fcgi とかでチェックしてると、 Use of uninitialized value in concatenation (.) or string at hoge.fcgi line 31. とかってエラーがでつづけて少し時間を使ってしまっ…
use lib モジュールを使うことで、コンパイル時に、@INC に、検索パスを追加できます。 (ref. http://d.hatena.ne.jp/perlcodesample/20080428/1209380085) 自作したPerlモジュールを使用する際は、 検索パスをカレントディレクトリに通しておく。 そうすれ…
Mod/GenKey.pm did not return a true value at hogehoge.fcgi line 14. BEGIN failed--compilation aborted at hogehoge.fcgi line 14. なんか怒られてる。 →モジュールの最後には 1; などで閉めます。[http://itpro.nikkeibp.co.jp/article/COLUMN/2008052…
$string =~ s/^\s*(.*?)\s*$/$1/; これでいける。空白文字が0文字以上続いていて、任意の文字の0文字以上の連続ないしは0か1 (カッコ()で囲んだ部分にマッチした文字列は、置換文字列によって、特殊変数$1などとして参照される) で、その後また空白文字の0文…
Perl で CGIプログラミングをするときは、perlのコードに print "Content-Type: text/html;charset=utf8\n\n" が必要なのは、以前メモった。 理由は、 サーバーは最初に、ブラウザに対して 「これからお送りしますのは、テキストで書かれたHTMLですよ〜」と…
画面遷移の際、値を渡します。 そのとき、form を使えば GET, POST などを指定して送れるのですが、 フォームに記入したり、とにかくワンアクション動作が入ってうるさいです。リンクに直接値を埋め込めば、GET指定になるという制約は発生しますが、 受け取…
print "Content-Type: text/html\n\n"; これを入れてあげないとブラウザ上で表示されない。 htmlとして認識させてあげる。
perl -d ./filename.pl "n"で一行ずつデバッグ、 "p"で関数の中まで入っていく。