締切り済みの質問
以下のようなプログラムを書きました。
--------------------------------------------------------------
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");をつけると'らす'でプログラムが終わってしまい、'ー半'…以降がプリント出来ません。
どうすればよいのでしょうか。またどうしてこうなるのでしょうか。
投稿日時 - 2000-05-24 13:04:30
5人が「このQ&Aが役に立った」と投票しています
回答(1件中 1~1件目)
シンボルテーブルとかエイリアスとかが私はよくわからんのですが、
問題は *b というところにあります。これが $b ではなく @b のほうの
エイリアス(?)になっているようです。
つまり、$b ではなく、@b をいじってしまうため、
&jcode'convert(*b, "sjis");
の実行後、@b が空になってしまっています。
だから、一回目の「半」「ら」「い」「す」まではとりあえず処理するけど
次にまた @b のループをしようとすると、@bは空になってるために
ループを抜けてしまっているようです。
とりあえず、@b と $b を違う名前に変えれば解決するはずです。
投稿日時 - 2000-05-24 20:46:36
補足
出来るようになりました!
ありうがとうございました!
投稿日時 - 0000-00-00 00:00:00
OKWaveのオススメ
おすすめリンク