

a.cgiにてクッキーをセットし、  
同じ階層のb.cgiでクッキーの読み出しをしようと  
したところエラーが発生いたします。

b.cgiの `$main->param(READID => $readid);` の箇所の指定で  
エラーが出ているようですが、原因がわかりません。  
どのような指示が相応しいのでしょうか？  
ご教示いただけるとありがたいです。  
よろしくお願いいたします。

■a.cgi

[code]

    use CGI;
    use HTML::Template;
    
    my $q = CGI->new;
    my $readid = $q->cookie("id");
    $main->param(READID => $readid);
    
    print "Content-Type: text/html\n";
    print "Set-Cookie: id=$id; expires=Tue, 1-Jan-2030 00:00:00 GMT; path=/;\n";
    
    my $main = HTML::Template->new(filename => './tpl/main.tpl');
    
[/code]

上記テンプレート内にでクッキーの内容は表示されます。

■b.cgi

[code]

    use CGI;
    use HTML::Template;
    
    my $q = CGI->new;
    my $readid = $q->cookie("id");
    $main->param(READID => $readid);
    
[/code]

■エラー内容  
[error] Can't call method "param" on an undefined value  
[error] Premature end of script headers: b.cgi

よろしくお願いいたします。


CC BY-SA 3.0
2015-08-06T09:09:01.827
13108
2015-08-06T14:39:56.880
2015-08-06T09:17:27.493
8000
10824
question
perl cookie
perlでのクッキー取得エラー


`$main` の値が `undef` のため、メソッド呼び出しに失敗しています。b.cgi だけではなく、a.cgi も同様のエラーになるはずです。

このようなミスを防ぐため、先頭に `use strict;` (とついでに `use warnings;`) を入れておくと良いでしょう。`use
strict` によって、宣言されていない変数を使用していた場合にはエラーとなります。


CC BY-SA 3.0
2015-08-06T14:39:56.880
13116
2015-08-06T14:39:56.880
76
13108
answer