つぶねこ
@もじらもーど。
言語の学習日記みたいにゃものは、当人にとって非常にイタいものににゃるので、にゃかにゃか付けにゃいのだが、メモ程度にゃら良しとしよう。
というわけで、perlのヒアドキュメントにおいて、ヒアドキュメント内部から関数を呼び出したり、変数の演算結果をヒアドキュメントに埋め込む方法。CGIで使うとSSIチックにゃことが。
$A=3;
$HASH{1} = "3";
sub sub_func{ return $_[0]*$_[1]; }
print <<"END";
${print "0\n";}
2
$A
@{[4]}
@{[ $A+2 ]}
@{[ &sub_func($A,2) ]}
@{[ ($A <10) ? "7" : "X" ]}
@{[ 6 ],[ 7 ],[ 8 ]}
@{[ my $A=0 ],[ $A**2 ]}
@{[ local $x=100 ],[ sqrt($x) ]}
@{[ $A =~ s/3/11/g and $A ]}
@{[ $y=1,$z=2 ],[ $x . $y . $z ]}
@{[ join '' , each %HASH ]}
@{[ `echo -n 14` ]}
${print "1";}
END
これで、0から14まで順に表示される。
複数行書きたい時は?とか、もちっとつっこんで調べた方が良さそうだが、今回の要件は満たしているので、とりあえずこんだけ。まぁサブルーチン呼べるんだし何とでもにゃるでしょっていう。
map {$hash{$_} =~ s/([0-9]{1,3})(?=(?:[0-9][0-9][0-9])+(?![0-9]))/$1,/g;"$hash{$_}"} sort { $hash{$a} <=> $hash{$b} || length($a) <=> length($b) || $a cmp $b } keys %hash
とか書いていけば何でも出来るわけで、あとはヒアドキュメントの読みやすさを損ねにゃい程度に書くというだけかも。