6 件 見つかりました。

映画の予告編(動画)をブログに貼り付けてもらおうという試み。
なるほどなあ。これがブログ・マーケティングか。
TEAM of ミッション:インポッシブル
http://team.mi-3.jp/banner.html
(via http://kouno.typepad.jp/smashmedia/2006/05/team_of__70fc.html)

貼ってみました。音出ます。注意。

HTML::Template のドキュメント(see "perldoc -t HTML::Template") の
SYNOPSIS の自分用の補足。ドキュメント読むの面倒なとき用。
そのままコピペして動くようにしてある。
■その1
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $title = "Hello, World!";
my $content;
if (rand(2) < 1) {
$content = "Hello, Mimitako!";
}
my @list = ({key=>"One", num=>1}, {key=>"Sun", num=>3},
{key=>"Go", num=>5}, {key=>"Mimitako", num=>8});
my @templete_ary = <DATA>;
#my $templete_txt = join('', <DATA>);
my $t = HTML::Template->new(arrayref => \@templete_ary,
# scalarref => \$templete_txt,
# die_on_bad_params => 0,
);
$t->param(title => $title);
$t->param(content => $content);
$t->param(list => \@list);
print $t->output();
__DATA__
T: <TMPL_VAR name=title>
C: <TMPL_IF name=content><TMPL_VAR
name=content><TMPL_ELSE>mumumu</TMPL_IF>
L: <TMPL_LOOP name=list><TMPL_VAR
name=key>=<TMPL_VAR name=num> </TMPL_LOOP>
■その2(associate)
#!/usr/bin/perl -T use strict; use warnings; use HTML::Template; use CGI; my $q = CGI->new(); my @templete_ary = <DATA>; my $t = HTML::Template->new(arrayref => \@templete_ary, associate => $q); $t->param(time => $^T); print $q->header, $t->output(); __DATA__ <html> <body> <form> key = <TMPL_VAR name=key><input type="text" name="key"><br> num = <TMPL_VAR name=num><input type="text" name="num"><br> <input type="submit"> </form> time:<TMPL_VAR name=time> </body> </html>

プログラミング Perl 第3版 VOLUME 2![]()
「23章 セキュリティ」より:
デーモン、サーバ、および他人のために実行されるすべてのプログラム(例えばCGIスクリプト)には、-Tスイッチを指定すべきである。
[...]
すべてのCGIスクリプトに-Tフラグを指定して実行するということは、単に良い考えであるだけではない――それは、荒野のごときインターネットで生き延びるための掟なのである。
「掟」だそうです!!!
とはいえ、今まであまり意識してませんでした。反省。
というわけで説明。perlスクリプトの先頭を以下のようにする。
#!/usr/bin/perl -T
すると、コマンドライン引数やCGIのパラメタなどの外から来た変数をファイル名として開くときに
Insecure dependency in open while running with -T switch at ...
と教えてくれる。
実験用スクリプト a.pl:
1 #!/usr/bin/perl -T 2 use strict; 3 use warnings; 4 my $fn = shift @ARGV; 5 6 open(F, "> $fn") or die; 7 print F "hello\n"; 8 close F
実行結果(怒られる):
% ./a.pl daredemonai Insecure dependency in open while running with -T switch at ./a.pl line 6.
回避するには掃除が必要。例えば5行目を以下のようにするとOK。
5 if ($fn =~ /^([a-z0-9]+)$/i) {$fn = $1} else {die}
ただし掃除が正しくされてるかどうかまでは感知してくれない。
つまり "-T" のチェックを通ったとしても安全性は保証されない。
とはいえリマインダーとしてだけでも十分有意義。
詳しくは perlsec の man ページ (man perlsec) を参照のこと。
追記060528: 5行目の掃除方法を修正しました (man perlsec の例に準拠)。
元は下記↓。ご指摘ありがとうございます (see
)。
5 $fn = $1 if ($fn =~ /^([a-z0-9]+)$/i);

Perl の特殊変数のうち自分が使っているものだけメモ。
$0 スクリプトのファイル名
$$ プロセス番号。see "perldoc -f srand"
$^T スクリプトの実行開始時間
$. 読み込み中の行番号(レコード番号)。例: while(<>){print $.}
$/ 入力レコードのセパレータ。例: undef $/; $a = <>;
$| バッファリングの制御。$|=1 でバッファリングなし。
$! システムコールのエラー。例: chdir("aaa");print $! if $!;
$@ evalでのエラー。例: eval '$a=f(1)';print $@ if $@;
$, 出力フィールドの区切り。例: $,='/';@a=(1,2,3);print@a;