作者WalkingIce (会走路的冰块)
看板perl
标题Re: [问题] 读档案到阵列
时间Mon Jul 2 16:50:56 2007
※ 引述《handsomegirl (薰)》之铭言:
: 1.想请问一下,当我把档案都读到阵列里去後
: 有什麽办法可以搜寻我指定的字串
: 然後可以得到此字串在第几行,
: 包括这行,开始往下print?
假设 sample 是这样
33996344 33996351 GB
33996352 50331647 XD
50331648 68257567 US
68257568 68257599 CA
全部读进阵列後,对每一行做比对
在比对成功之前的每一行都丢进另一个 array 里面
#! /usr/bin/perl
open FILE,"sample";
@a1 = <FILE>;
my @a2;
# 以 US 来比对
push (@a2,shift @a1) while (@a1[0] !~m{.+US} && @a1);
print @a2;
print "=====\n";
print @a1;
结果如下
33996344 33996351 GB
33996352 50331647 XD
=====
50331648 68257567 US
68257568 68257599 CA
或着你可以设定一个变数 $switch = 0; // 0=关闭 1=打开
foreach(@array) {
$switch = 1 if (比对成功);
print $_ if $switch;
}
: 2.假设我把这个档案分成几段去读取
: 怎麽样可以把第二段接在第一段後面呢?
: 例如:
: p1 p2 p3... 我想把第二段接在这里,不是接在下面
: 1 v1 v2...
: 2 v3 v4...
: 这个有办法吗?翻了很多书想了几天还是没想到方法,请大家帮帮忙,
: 谢谢,我一直都在这个版受益良多
不太懂问题的意思
如果延伸上面的程式继续这样写
while (@a1 || @a2) {
chomp @a2[0];
print "@a2[0] --- @a1[0]";
shift @a1;
shift @a2;
}
结果就会如下,不知道是不是你要的
33996344 33996351 GB --- 50331648 68257567 US
33996352 50331647 XD --- 68257568 68257599 CA
--
我想你会衰成这样都是我害的
---- Tizzy Mac
紧张的麦金塔?这是谁(._.?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.128.98.6