[問題] while跟for的問題
首先我有2個檔案分別是a.txt跟b.txt
a.txt內容
a 6 10
b 2 5
c 3 9
b.txt內容是:123456789abfewfwegry(就是一串字)
以下是我的程式碼(for一個輸入)
=========================================================
#!/usr/bin/perl -w
open (FH,"a.txt")||die"File open Error!\n";
chomp(my $input=<>);
while(<FH>){
@in=split/\t/;chomp; #a.txt用tab為分隔
if($input eq $in[0]){
$x=$in[1]-1;
$y=$in[2]-1;
open (TXT2,"b.txt")||die"File open Error!\n";
while(<TXT2>){
@strs=split//;
while($x<=$y){
$element=$strs[$x];
$x++;
push(@out, $element);
}
}
}
}
print @out,"\n";
結果為:我輸入a,他先把 6跟10記錄起來,然後去記事本b找第6個~第10格元素,印出來
C:\>perl 99.p
a
6789a
C:\>perl 99.p
b
2345
C:\>perl 99.p
c
3456789
======================以上為單輸入=========================================
現在我不要輸入了,
我就直接設一陣列內容為abc(就是我把我的輸入預設,且為多個)
以下是程式碼:
#!/usr/bin/perl -w
open (FH,"ttt.txt")||die"File open Error!\n";
@array=("a","b","c");
foreach $index(0..$#array){
while(<FH>){
@in=split/\t/;chomp;
if( $array[$index] eq $in[0]){
# push(@output,"$in[1],$in[2]");
$x=$in[1]-1;
$y=$in[2]-1;
open (TXT2,"test2.txt")||die"File open Error!\n";
while(<TXT2>){
@strs=split//;
while($x<=$y){
$element=$strs[$x];
$x++;
push(@out, $element);
}
}
}
}
print @out,"\n";
}
其結果為
C:\>perl 99.p
6789a
6789a
6789a
只存到當輸入=a的,要怎麼修飾,才會跟上面一樣結果?
道理應該是for a做一次,for b再做一次,for c再做一次,怎麼只做a而已?
有點冗長,在這先說聲謝謝。
補充
我在for迴圈加了print 看看是不是a,b,c都有做結果是有的
foreach $index(0..$#array){
print $array[$index],"\n";
while(<FH>){
..
..
....
結果為
C:\>perl 99.p
a
6789a
b
6789a
c
6789a
囧!~
▂▂ ▂▂▂
▂▄▅▅▄▆█ _█◣
◢ (●) ◣/\\
丫 │◥  ̄◤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.215.116
※ 編輯: sqrt1089 來自: 140.116.215.116 (11/11 15:27)
→
11/11 15:35, , 1F
11/11 15:35, 1F
→
11/11 15:36, , 2F
11/11 15:36, 2F
※ 編輯: sqrt1089 來自: 140.116.215.116 (11/11 15:41)
推
11/11 17:51, , 3F
11/11 17:51, 3F
→
11/11 17:52, , 4F
11/11 17:52, 4F
→
11/11 17:52, , 5F
11/11 17:52, 5F
→
11/11 18:25, , 6F
11/11 18:25, 6F
→
11/11 18:25, , 7F
11/11 18:25, 7F
→
11/11 18:25, , 8F
11/11 18:25, 8F
foreach $index(0..$#array){
#@FH=<FH>;
open (FH,"ttt.txt")||die"File open Error!\n";
while(<FH>){
..
.
輸入結果為:
C:\>perl 99.p
a 6789a
b 6789a2345
c 6789a23453456789
正在尋找,不要記憶前面輸入的相關文章。
※ 編輯: sqrt1089 來自: 140.116.215.116 (11/11 18:28)
→
11/11 18:40, , 9F
11/11 18:40, 9F
→
11/11 18:41, , 10F
11/11 18:41, 10F
→
11/11 18:44, , 11F
11/11 18:44, 11F
→
11/11 18:44, , 12F
11/11 18:44, 12F
→
11/11 18:45, , 13F
11/11 18:45, 13F
→
11/11 18:46, , 14F
11/11 18:46, 14F
→
11/11 18:52, , 15F
11/11 18:52, 15F
→
11/11 23:19, , 16F
11/11 23:19, 16F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
問題
1
16