2

Perl で Web アプリを作成していDancerます。ourで変数$varを宣言し、A.pmの内容を代入するとfile1します。

sub get_file_content {
    our $var = <FILE1>;
}

後で別のファイルで使用したいので、次のように宣言varしました。ourB.pm

sub display_file_content {
    &display($A::var);
} 

したがって、get_file_content実行された後は$var、file1 の内容である必要があります。を実行する前display_file_contentに、file1 の内容を変更し、いくつかのボタンをクリックして実行しdisplay_file_contentました。想定通り、file1 の元の内容が表示されました。

次に、file1 の内容を変更した後、ボタンをクリックしなかったことを除いて、上記と同じことを行いましたdisplay_file_content。代わりに、別の Web ブラウザーで同じページに対する別の Web 要求を開始します。私は最初に実行get_file_contentし、ボタンをクリックしてdisplay_file_content直接進みます。file1 の変更されたコンテンツが 2 番目の Web ブラウザーに表示されました。これは正常です。しかし、最初の Web ブラウザーで表示ボタンをクリックすると、元のコンテンツではなく、変更されたコンテンツも表示されました。別の Web ブラウザで 2 回目の Web リクエストを行わなかった最初の実験と比較すると、変数$varは両方の Web リクエスト - レスポンス プロセスで共有されているようです。しかし、なぜそれが起こったのですか?いくつか説明をお願いできますか?

4

1 に答える 1