「<<」の記述でwhile構文を認識させたいのですが。

[上に] [前に] [次に]
もーちゃん 2000/06/02(金) 19:02:21
こんにちは。またまた行き詰まってしまいました。
どうか、お力添えを。m(_ _)m

下のように、「<<」を使って、$msg という変数に aaa.txt の内容を
いれたいのですが、$msg を bbb.txt に出力すると、

open (OUT,"aaa.txt");
  while (<OUT>){
    print;
  }
close(OUT);

と、出てきてしまいます。
何が原因なのでしょうか?

------------------------------------
$msg=<<"MSG";
open (OUT,"aaa.txt");
  while (<OUT>){
    print;
  }
close(OUT);
MSG

open (IN,">>bbb.txt");
print IN "$msg";
colse(IN);

2000/06/02(金) 19:22:13
何というか、当たり前です。
ヒアドキュメントの使い方を理解されてますか?
この場合、ヒアドキュメントを使う必要はありません。

もーちゃん 2000/06/02(金) 19:25:09
すみません。理解していないかも…
SSIを使ったほうが良いということでしょうか?
これも見当違いだったらすみません。

悪魔のZ 2000/06/02(金) 19:51:08
●解答編●
$msg=<<"MSG";
open (OUT,"aaa.txt");
  while (<OUT>){
    print;
  }
close(OUT);
MSG

↑を

open (OUT,"aaa.txt");
  while (<OUT>){
    $msg.=$_;
  }
close(OUT);

でOK?

●解説編●
http://www.tohoho-web.com/wwwperl1.htm#EOF

要するに
$msg=<<"MSG"; 以降 MSG までの記述が $msgに代入されて
print IN "$msg";で$MSGの値がbbb.txtに出力されます。

もーちゃん 2000/06/02(金) 20:02:42
[[解決]]
で、できました!

悪魔のZさんありがとうございます。
(SSIとか言い出してはずかしいですっっ)

教えてもらったページで、よーく勉強したいと思います!

悪魔のZ 2000/06/02(金) 20:47:30
すみません修正です
× print IN "$msg";で$MSGの値がbbb.txtに出力されます。
○ print IN "$msg";で$msgの値がbbb.txtに出力されます。

がんばって勉強してください > もーちゃん

もーちゃん 2000/06/02(金) 20:59:42
>がんばって勉強してください > もーちゃん
ありがとうございます! がんばります!!

すみません。もうひとつ追加で質問してもいいですか?

$msg に aaa.txt の内容を入れることは成功したのですが、
(なぜそうなるかは勉強中…)
aaa.txtに変数があっても、それは「文字」になってしまうのでしょうか?

aaa.txtには、
----------------
名前:$name
電話: $tel
---------------といった、内容が入ってます。

$msg=名前:$name;
とすれば、ちゃんと「名前:もーちゃん」になるんですけど、
上の方法でやると「名前:$name」になります。

「ここを読め!」というところがあれば、それだけでもいいので、
よろしくお願いします。

もた 2000/06/02(金) 23:11:29
文字列中に書かれた変数名(例:$name)が、その変数の内容(例:もーちゃん)に
展開されるのはどんなときか、ということですよね。

「UNIX短編シリーズ Perl」(\1300)を買って「第2章 文字列自由自在」を読めと
いうのはアリでしょうか(^_^;

悪魔のZ@無責任モード 2000/06/03(土) 16:43:07
s/\$mane/$name/g
かな?

もーちゃん 2000/06/05(月) 10:06:59
[[解決]]
>もたさん

やっぱり、イチからきちんと勉強するほうが近道ですよね。
お昼休みにでも、本屋さん行ってみます!

>悪魔のZ@無責任モード

で、で、できました! すごいー(;_;)
ほんとに、ほんとに、ありがとうございます。

>s/\$mane/$name/g
これは、置換するってことですよね?
「¥」をつけるのは、
文字列の$mane を 変数の$name に置換する
という考えであってますか?

お二人とも、ほんとにありがとうございました!!

悪魔のZ 2000/06/05(月) 10:30:04
> 文字列の$mane を 変数の$name に置換する
> という考えであってますか?
YES

> 「ここを読め!」というところがあれば、それだけでもいいので、
> よろしくお願いします。

まず↓これを読んだ上で
http://www.tohoho-web.com/wwwperl.htm

本を買うつもりなら
初めてのPerl(Learning Perl) ISBN4-89052-678-1
プログラミングPerl改訂版 ISBN4-900900-48-6
あたりがお勧めかな

[上に] [前に] [次に]