Perl コーディング初心者質問コーナー Part30

このエントリーをはてなブックマークに追加
952nobodyさん:03/12/31 10:26 ID:???
>>951
もしかして \n ?(^-^)
953nobodyさん:03/12/31 13:09 ID:???
$u

URLじゃなかったっけ(;´д`)?
954nobodyさん:03/12/31 13:11 ID:???
『うろ覚えだけど変数の話をしてみよう』スレになってきたな
955nobodyさん:03/12/31 16:33 ID:iz4Gmtql
テキストファイルに保存されている151,241といったような数字を
151だけ$number1などに代入するのはどのようにすればよいですか?

何から手をつけてよいのかちんぷんかんぷん。
956nobodyさん:03/12/31 16:37 ID:???
>>955
漏れらも君がどこでつまづいているのかちんぷんかんぷんだ。
957955:03/12/31 17:05 ID:???
例えばcnt.txtというファイルの中に「151,241」とデータがあって
それを
open(IN,"cnt.txt");
@log = <IN>;
close(IN);

という形で読んだとして
@logの151,241という数字をどのように
$number_1→151 $number_2→241
とそれぞれに割り当てるのかがちんぷんかんぷんなんです。
958nobodyさん:03/12/31 17:09 ID:???
>1は読んだ?
959nobodyさん:03/12/31 17:20 ID:???
>>957
こういう例でいいっすか

$str = "151,241";
($number_1,$number_2) = split(',',$str);
print "number1 = $number_1 : number2 = $number_2 \n";
960nobodyさん:03/12/31 20:17 ID:???

外部fileを読み取りたい場合はそのフォーマットを述べなさい。
それだけで充分。

while(<IN>){
no strict 'refs';
$num++;
${'number_' . $num} = split (/,/$_);
}

一番手っ取り早いのはこれだけどあまり勧められた方法じゃない。
961nobodyさん:03/12/31 20:18 ID:???
↑やっぱすごく間違えた。流して。
962nobodyさん:03/12/31 20:32 ID:???
>>960

while(<IN>){
 my @log = split (/,/$_);
 my $num = 0;
 foreach my $logs (@log){
  no strict 'refs';
  $num++;
  ${'main::number_' . $num} = $logs;
 }
}

これを書きたかったのかな?
てかスカラーに入れる意味がなさげな典型な悪寒。
963nobodyさん:03/12/31 20:37 ID:???
つか俺も間違えてる……………鬱
my $num = 0;
これループの外で…。あー、こんな時にPCに向かってるから頭バグったっぽい。
964nobodyさん:03/12/31 23:13 ID:???
ファイルオープンせずにファイルを空にする方法ってあります?
965nobodyさん:03/12/31 23:44 ID:???
>>964
理解 分解 再構築
966nobodyさん:04/01/01 00:31 ID:???
錬金術でつか?
967nobodyさん:04/01/01 01:58 ID:???
>>964
truncate
968nobodyさん:04/01/01 02:48 ID:???
>>967
> ファイルオープンせずに
969nobodyさん:04/01/01 02:53 ID:???
>>964
touch and rename
970967:04/01/01 03:26 ID:???
>>968
http://www.harukaze.net/~mishima/perl/man/perlfunc.1.html
>truncate FILEHANDLE,LENGTH
>truncate EXPR,LENGTH
> FILEHANDLE 上にオープンされたファイルか、EXPR で名前
> を表わしたファイルを、指定した長さに切り詰めます。
> システム上に truncate がインプリメントされていなけれ
> ば、致命的エラーとなります。

truncate('test.txt', 0); # test.txtファイルを0バイトに切り詰める
971nobodyさん:04/01/01 03:28 ID:???
そろそろ次スレ立てない?
972nobodyさん:04/01/01 03:36 ID:???
そだね。
part28 http://pc2.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc2.2ch.net/php/kako/1066/10662/1066286828.html
過去ログ化早い。
変更はこれぐらい?
973nobodyさん:04/01/01 03:46 ID:???
立てました。
Perl コーディング初心者質問コーナー Part31
http://pc2.2ch.net/test/read.cgi/php/1072896288/
974nobodyさん:04/01/01 06:47 ID:???
975nobodyさん:04/01/01 10:33 ID:???

ところでエディタのタブはみんな何文字にしてる?

ちなみに俺は8文字で、タブ文字も表示させてる。
最近4文字でタブ非表示に切り替えようと思ってるだけど見にくい。。。全然慣れない。
976nobodyさん:04/01/01 11:01 ID:???
タブを入力すると自動的に必要なインデント分のスペースに変換される。
ちなみに4桁インデントだから1タブ=4空白だな。
977964:04/01/01 11:05 ID:???
>>970
できました。多謝。
978nobodyさん:04/01/01 12:37 ID:???
1tab = 4space タブ、改行、EOF表示。
場合によっては全角スペースも表示。
979nobodyさん:04/01/01 16:12 ID:???
>975
4
8だと横に長くなりすぎて読み難い。
980nobodyさん:04/01/01 17:41 ID:KSdPAoW/
#!/usr/bin/perl -w
の最後に -w 付けるのと付けないのではどう異なるんでつか?
981nobodyさん:04/01/01 17:58 ID:???
>>980
Perlの機嫌がよくなる

会話で「〜w」って使うでしょ?
アレのこと
982nobodyさん:04/01/01 18:02 ID:???
983975:04/01/01 18:17 ID:???
みんな4なんだなー。
やっぱ俺も早く4になじもう。周囲との互換性のために。

>>978
改行まで表示させたらウザくない?
俺は左側に行番号表示させてるから普通にしてても改行分かる。
俺はタブ、EOF、全角スペースは常に表示させてる。
4で表示させる時はタブ消す。


ちなみに秀丸でした。
984nobodyさん:04/01/01 19:51 ID:???
4のほうがイイヨー
8は横行き過ぎだ
2重ネストで見にくくない?3重になると・・・
985nobodyさん:04/01/01 19:53 ID:???
中級になるとネストしないように書けるようになるよ。

それがPerlの醍醐味
986nobodyさん:04/01/01 20:24 ID:???
上級になるとループすら使わずに書けるようになるもんなぁ。
987984:04/01/01 21:02 ID:???
>>985>>986
そうか・・・
俺はまだ未熟者なんだな。
精進します
988nobodyさん:04/01/01 21:04 ID:K8LfWOde
慣れると2重くらいぜんぜんきにしない。
コードの部分が必要な機能満たしているかどうかきにするだけで。。。
989nobodyさん:04/01/02 00:21 ID:???
>>987
grep map $_ @_ とりあえず、これらの使い方を覚えてみるといい。
驚くほどコードが短くなる。
引数を省略した時の動作とかを覚えるのも手だろう。
990nobodyさん:04/01/02 00:57 ID:???
>>823 とか流石なくらいに短いよな。

しかしコードの長さと可読性は量子力学的に反比例の関係になるので、
自分の身の程をわきまえつつ、ほどほどにな。
991nobodyさん:04/01/02 01:23 ID:???
>>990
> しかしコードの長さと可読性は量子力学的に反比例の関係になるので、
それは一概に言えないと思うけど...
perlじゃないけど関数型言語なんかコードが短くて可読性の高い例。
で、量子力学的に反比例ってどういう意味?量子力学的にって
992nobodyさん:04/01/02 01:37 ID:???
不確定性原理に基づいた結論なのだろう。
993nobodyさん:04/01/02 01:37 ID:???
量子力学的にっていう言葉がなぜ出てくるか分からないが
・読みやすければ長い
・短くすれば読みにくい
つまり、
可読性∝コードの長さ/1
ということではないだろうか!!!!












・・・
994984:04/01/02 01:40 ID:???
grepを見るとELTのGrip!を連想してしまう俺って・・・
995nobodyさん:04/01/02 01:41 ID:???
そんなあなたに連想配列(ププラッチョ
996nobodyさん:04/01/02 01:41 ID:???
禿しくワラタ(ゲラプップー
997nobodyさん:04/01/02 01:42 ID:???
>>995>>996
ワラタ
998nobodyさん:04/01/02 01:43 ID:???
>>997
だろ?
999nobodyさん:04/01/02 01:43 ID:???
>>998
ですな
1000nobodyさん:04/01/02 01:46 ID:???
1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。