- 締切済み
jcode'convertについて
以下のようなプログラムを書きました。 -------------------------------------------------------------- require 'jcode.pl'; @a=("ら","ー","め","ん"); @b=("半","ら","い","す"); foreach $a(@a){ &jcode'convert(*a, "sjis"); foreach $b(@b){ &jcode'convert(*b, "sjis"); print $a; print $b; $aaa = <STDIN>; } } ------------------------------------------------------------------ &jcode'convert(*a, "sjis");が無いときは'ら半','らら','らい',,'らす','ー半'… といくのですが、&jcode'convert(*a, "sjis");をつけると'らす'でプログラムが終わってしまい、'ー半'…以降がプリント出来ません。 どうすればよいのでしょうか。またどうしてこうなるのでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
シンボルテーブルとかエイリアスとかが私はよくわからんのですが、 問題は *b というところにあります。これが $b ではなく @b のほうの エイリアス(?)になっているようです。 つまり、$b ではなく、@b をいじってしまうため、 &jcode'convert(*b, "sjis"); の実行後、@b が空になってしまっています。 だから、一回目の「半」「ら」「い」「す」まではとりあえず処理するけど 次にまた @b のループをしようとすると、@bは空になってるために ループを抜けてしまっているようです。 とりあえず、@b と $b を違う名前に変えれば解決するはずです。
補足
出来るようになりました! ありうがとうございました!