帮忙!!

帮忙!!

帮忙!!
相关图像上载:(JPG 格式, 150 K)


我编了一段程序,但是还是不合理希望大家帮助修改!<br>我的目的是从下面附件的序列中,把圈在一起的去掉,也就是<b>和紧接着的<a行要求保留,而把其他<b去掉.程序如下:
#!c:\perl\bin\perl -w
print "Please enter the source filename:";
chomp($file=<STDIN>);
print "Please input the output file name:";
chomp($out=<STDIN>);
open (OUT,">$out")||die "Can't open the output file name!";
open(FILE,$file)||die "Can't open the file!";
@FL=<FILE>;
$i=0;
while ($FL[$i]) {
until($FL[$i]=~/^\<[b].*\n/gi) {
print " has already found:$FL[$i]\n";
print OUT $FL[$i-1] ;
print OUT $FL[$i};
last;
}
$i++;
} ;
print "共查到$i次!";
close(FILE);




   

你的问题里又有 b 又有 br.
你的问题里又有 b 又有 br, 不能写清楚点? 那个源文件你贴出来一小部分就好了,没必要做图片,还看不清楚。

另外,你贴出的程序本身就有问题, untill 那部分少了 } , 同时写 perl 程序时请加上 'use strict' , 每个 perl 程序员的 perl 程序都应该以下面这一段开头。(or use warnings etc...)

#/usr/bin/perl -w
use strict;


言归正传, 你想做的是把 <b> 到 <a> 之间的数据拿出来?
谢谢qing的纠正,我已经把上面作了修改.

对我的意思就是把 <b> 到 <a> 之间的数据拿出来,该如何处理啊?
看你的那个图,好像所有 &.
看你的那个图,好像所有 <b> 开头的都是独立一行。 那你把凡是 <b> 开头的拿出来不就可以了么? print OUT $_ if /^<b>/;

如果你在处理大文件时,把文件内容整个放到数组里就是把整个文件内容放到内存里,不推荐。所以不要使用 @FL=<FILE>;
你直接 while (<FILE>) 就可以了,这只是逐行读入。
可能我的意思没有表达清楚.
可能我的意思没有表达清楚,我想把<b>行和紧接着的所有<a行提取出来,而<b>行和紧接着的所有<a行以外的<b行全不提取,如
<b>asfsafdffffffffffffffffffffffffff
<b>rasdfasdfasdfasdfasdfasdf
<b>ghjherhtierhtgsjkdhfgerhgj
<a dfgioesrgosdfjgsdkfjgfdsjgfdg
<a ihgkjfdgksfgjsfjjfghjdkflhjkfhhg
<a dkfhjdsjghkdfjhkldfjhklfdhgklgfh
<b>kgfhjdfghkfhjkfdhdfhjklfhl;l
<a dfjgkdsfjgslkdjfg;lkdfjg;lksdfjgs;ldkf
我只想提取第三行到第六行,第七行和第八行,而第一行和第二行不提取.
你用一个两个元素的数组,.
你用一个两个元素的数组,一次存两行,每次读入一行的时候,push一次,shift一次,这样更新数据。
然后用一个$switch变量,初始值为0.。
当数组的第一个元素是b 第二个是a的时候, 将$switch设为1, 然后打印第一个元素。
当第一个是b,第二个是a的时候,将$switch变为0;

然后在循环里,当$switch=1的时候,打印数组的第二个元素,就可以了。

你写的代码还有不少问题,仔细读一读一些入门的文章吧。
use strict;
use warnings;
最好都加上。
非常感谢klaus的帮助与指教,希望推荐基本好的图书.
begining perl for bioinf.
begining perl for bioinformatics 适合生物学家对perl入门,你可以看一下。本版就有兄弟提供下载。 :)
谢谢klaus .