Perlなんですが・・・ (119レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
66(3): 名無しさん@お腹いっぱい。 [] 02/02/04 11:49 ID:fnAmBNHz(1)
こんにちわ、perlの事で質問させてください。
以下のスクリプトですが
#! /usr/bin/perl # お約束
# 私のスクリプトそのままです(編集はしてません)
$TMP = 10 ** 10; # $TMP に10の10乗を代入
$X = 10; # $X に10を代入
while ($TMP) # $TMPが0になるまで繰り返し処理
{$A = --$TMP % $X; # $TMPの値を-1し、$Xの剰余を$Aに代入
print "$A $TMP \n";}# 処置した値を画面に表示
上記のスクリプトですが、表示される$Aの値が変化しません
5 999999999
5 999999998
5 999999997 ......
$Xの値が1だと$Aは0で固定
$Xの値が2だと$Aは1で固定
$Xの値が3だと$Aは0で固定
$Xの値が4だと$Aは3で固定
$Xの値が5だと$Aは0で固定
$Xの値が6だと$Aは3で固定
$Xの値が7だと$Aは3で固定
$Xの値が8だと$Aは7で固定
$Xの値が9だと$Aは3で固定
私の知識が正しければ、$TMPの値を$Xで割った余りの数値が表示され
1行ごとに値が変更されると思うのですが。。。
どこか間違っているのでしょうか
識者の皆様、ご回答をお願いします
68(1): 初心者 [] 02/02/04 13:31 ID:g/ay00Kk(2/2)
>>64
必要性と言われても・・というのが正直なところです。
何らかの必要性があるからmyやlocalが存在するのでしょう。
一般的にグローバル変数は少ない方がいいとされています。
ソースを他人に見せるときや、昔書いたソースを見直すとき、
グローバル変数が無い方が理解しやすいです。
>>65 初心忘るべからず。
>>66
Perlのバージョンはいくつでしょう?
http://www.perldoc.com/perl5.6.1/pod/perldelta.html#Core-bug-fixes
の3項目、
Integer modulus on large unsigned integers
sometimes returned incorrect values.
と言うわけで、Perl5.6.0以降を使いましょう。
69: 66 [sage] 02/02/04 13:53 ID:???
>>68 :初心者様
ご回答ありがとうございました
確認してみたところ、確かに、バージョンが古すぎました
(5.005_03)
$TMPの値を10**10 から 10**9 に変更して実施してみたところ
正常に動作することを確認しました
ご回答、ありがとうございました
70: 名無しさん@お腹いっぱい。 [] 02/02/04 20:08 ID:+YaLpde/(1)
>>66
老婆心ながら
変数名を3文字に統一しないなら「TMP」は「TEMP」にした方が良いね。
あと、66のスクリプトなら「$A]と「$X]の変数名は逆にしようよ
一番良いのは
$TEMP => $I(カウント変数)
$A => $X(計算値変数)
$X => $A(定数)
細かいけど、癖にしてたほうが後で役に立つよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.014s