>  投稿者:ハッカ飴 2002/01/27 (日) 01:43:25        [mirai]
> > ''も""もつけない裸の文字列は、確かどっちかをつけたときと同じように見なされるんだよな?
> > つまり、print <<EOFは、print <<'EOF'と見なされたんじゃないのかな?
> 今タメしてみたんだが、print <<'EOF'でファイル名の入った変数を
> フレーム指定するHTMLを吐かせてみると当然ながら変数が展開されず
> $fileというものがブラウザに出てきてしまうが、print <<EOFとしたら
> 変数は展開されて、またS-Jisの文字コード原因のエラーも出ずに
> 動いた。つまりprint <<EOFはprint <<"EOF" ともprint <<'EOF'とも
> 違うものである模様。

それは不思議だな。
そこで引用符を付けないと、""を付けたのと同じになるはずだったのに・・・。
新バージョンから変わったのかね?
俺が使っているのはperl5.005なんだけど。

話のネタに、不思議な理由を書くか。
エラーというのは全角スペースに@が含まれているからだったな。
つまり、お前の話だと$は展開されて、@は展開されなかったということになる。
そんな半端な機能ってあるものなのかどうかが不思議。

それで、ちょっと調べたら、
そのエラーメッセージは"In string~"というものじゃないか?
これは展開した変数が存在しなかったときにだけ出るエラーだそうだ。
警告に近いエラーだね。「@var という変数があるが、これは間違いじゃないのかね?」とperlが注意しているから。

だから、エラーが出たり出なかったりしたのはこのせいじゃないのかって思うんだけど、どうよ?

参考:2002/01/27(日)00時03分46秒