LWP::Simple获取网页的问题

LWP::Simple获取网页的问题

LWP::Simple获取网页的问题
[code]
#!/usr/bin/perl
my $begin='full_report&list_uids=';
my $end='</a></td></tr>';
use LWP::Simple;
for($n=100001;$n<=100257;$n++)
{
my $url='http://pid.nci.nih.gov/MoleculePage?molid='.$n;
my $doc=get($url);
$doc=~m/$begin(.*)$end/is;
open OUT,">D:/perl/Scripts/txt/$n.txt";
print OUT $1;
close (OUT);
}
[/code]


用循环是可以批量获取网页的信息的~~
问题是网址($n)不是循环的,需要根据文件的列表取得.

有一文件,$n如下
100379
100602
100382
100605
100383
100606
100608
100633
28813
100629
……

这样子该如何把循环改为从文件读取变为$sn呢
不知有没有说明白~
打开文件,读取,给$n赋值.
打开文件,读取,给$n赋值。。
谢谢提醒~~--已完成~~ 谢谢提醒~~
已完成~~

[code]
#!/usr/bin/perl
my $begin='full_report&list_uids=';
my $end='</a></td></tr>';
use LWP::Simple;
open (IN,"D:/perl/Scripts/txt/list.txt");
while ($line = <IN>)
{
chomp($line);
my $url='http://pid.nci.nih.gov/MoleculePage?molid='.$line;
my $doc=get($url);
$doc=~m/$begin(.*)$end/is;
open OUT,">D:/perl/Scripts/txt/$line.txt";
print OUT $1;
close (OUT);
}
[/code]
不过也有个问题,大问题~~<.
不过也有个问题,大问题~~
当$1没有值时,会把上一轮取得的值给了$1
怎样每轮循环都把$1清0呢?
怎样初始化$1呢~~.
$doc=~m/$begin(.*)$end/i.
$doc=~m/$begin(.*)$end/is;
帮忙解释一下这句~~
特别是(.*)

这个是正则表达式,()里的.
这个是正则表达式,()里的就是$1的值.
$1 $2 $3 等用数字命名的特殊变量只有当匹配/替换成功时才有效,
因此你需要先判断替换是不是成功了,然后再决定是否 open/print/close。
问题是用1楼贴的那段代码?
问题是用1楼贴的那段代码是没有这个问题的~
没有匹配到,$1就没有值嘛,输出时就是空的

但改了后3楼的,就是没匹配成功, $1就会输出上一个匹配成功的值??

这是为什么呢?




   

[quote]回复给 flw : $1 $.
回复给 flw : $1 $2 $3 等用数字命名的?...


if(!$1){
print OUT "0000000000";
}
else
{
print OUT $1;
}
close (OUT);

这样还是不行哦? 就是$1匹配不成功时不是为空,还是等于上一轮匹配成功时的值~~
头痛~