- 締切済み
特定の変数の値をセッションを使わずに引き継ぐ方法
PHPだと、output_add_rewrite_var()という関数 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.phpで、 特定の変数をセッションを使わずに引き継ぐ方法があるのですが、 Perlで同じ事を実現できるでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maura
- ベストアンサー率46% (48/104)
output_add_rewrite_var 関数と echo 関数を作れば 同様の動作を行えます。 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.php のサンプルを参考にPerlで実現したのが以下のソースです。 use strict; use warnings; use vars qw(%AddVar); sub echo; sub output_add_rewrite_var; output_add_rewrite_var('var', 'value'); output_add_rewrite_var('foo', 'bar'); ## リンク echo '<a href="file.php">リンク</a> <a href="http://example.com">リンク2</a>'; ## フォーム echo 'aiueo <form action="script.php" method="post"> <input type="text" name="var2" /> </form>'; sub echo { my $text = shift; my ($hiddenPost, $hiddenGet) = ("",""); foreach my $vn (keys %AddVar) { $hiddenPost .= qq(<input type="hidden" name="$vn" value="$AddVar{$vn}" />\n); $hiddenGet .= $hiddenGet eq "" ? qq(?$vn=$AddVar{$vn}) : qq(&$vn=$AddVar{$vn}); } # form if ( $text =~ /<form[^>]+>/ ){ $text =~ s/(.*)(<form[^>]+>)(.*)/$1$2\n$hiddenPost$3/; } elsif ( $text =~ /<a href="/ ){ $text =~ s/(.*)(<a href="[^"]+php)(".*)/$1$2$hiddenGet$3/; } print $text . "\n"; } sub output_add_rewrite_var { my ($Name, $Value) = @_; $AddVar{$Name} = $Value; }