• 締切済み

特定の変数の値をセッションを使わずに引き継ぐ方法

PHPだと、output_add_rewrite_var()という関数 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.phpで、 特定の変数をセッションを使わずに引き継ぐ方法があるのですが、 Perlで同じ事を実現できるでしょうか?

みんなの回答

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

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; }

関連するQ&A