Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何从网页中获取未知长度的字符串_String_Perl_Url - Fatal编程技术网

String 如何从网页中获取未知长度的字符串

String 如何从网页中获取未知长度的字符串,string,perl,url,String,Perl,Url,我需要得到一个perl字符串,它的长度每天都在变化。请看下面的URL内容 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> <title>Index of /isos/preFCS5.3/LATESTGOODCVP</title> </head> <body> <h1>Index of /isos/preFCS5

我需要得到一个perl字符串,它的长度每天都在变化。请看下面的URL内容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>Index of /isos/preFCS5.3/LATESTGOODCVP</title>
</head>
<body>
<h1>Index of /isos/preFCS5.3/LATESTGOODCVP</h1>
<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last      modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/isos/preFCS5.3/">Parent   Directory</a></td><td>&nbsp;</td><td align="right">  - </td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="CVP-LATEST-5.3.0.37.iso">CVP-LATEST-5.3.0.37.iso</a></td><td align="right">19-Jul-2011 03:32  </td><td align="right">816M</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="ChangeLog-LATEST.2011-07-19-03h.30m.01s">ChangeLog-LATEST.2011-07-19-03h.30m.01s</a></td><td align="right">19-Jul-2011 03:32  </td><td align="right"> 16K</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="is.iso">is.iso</a></td><td align="right">19-Jul-2011 03:32  </td><td align="right">816M</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="md5SUM">md5SUM</a></td><td align="right">19-Jul-2011 03:32  </td><td align="right">111 </td></tr>
<tr><th colspan="5"><hr></th></tr>
</table>
<address>Apache/2.2.3 (Red Hat) Server at www.google.com Port 80</address>
</body></html>
在这里,如果你看到代码,它只得到5.3.0之后的数字(xx),“xx”,已知长度为2

我是否可以更改它,使其读取整个文件名,即.CVP-LATEST-XXXXXX*.iso,然后将其与$oldversion进行比较

请注意字符串“CVP-LATEST-”和“.iso”保持不变,但后面的数字会发生变化,也可能包含字母。 还要注意,URL内容中还有一个名为is.iso的文件。我不想那样做。

试试看

if ( $newPage =~ /href=\"CVP-LATEST-(.*?)\.iso\"/ ) {
    my $name = "CVP-LATEST-${1}.iso";

$name
包含整个文件名。

当您想要解析HTML时,您应该使用一个知道如何解析HTML的模块

你的问题经常被问到:

perldoc -q url

How do I extract URLs?

use HTML::SimpleLinkExtor;
...
my $extor = HTML::SimpleLinkExtor->new();
$extor->parse($newPage);
my($version) = grep /^CVP-LATEST-.*\.iso/, $extor->href;

html正则表达式的秘密,而不是双引号

/href="([^"]*)"/i

请接受您之前一些问题的答案;你不这样做是在阻止人们回答你的问题。那么$name包含什么呢?它是否具有整个字符串(CVP-LATEST-XX*.iso)?因为我需要整个字符串在$name中。而且我在你的代码中只看到1个“你知道在哪里结束吗”?很抱歉,我现在无法尝试代码,因为我现在无法访问该链接。谢谢,但我认为您在第1行中遗漏了一个“(双引号)。我可以知道另一个”(双引号)在哪里吗?是否可以使用此模块获取网站的时间戳?我只是不知道应该使用哪个参数来检查更新。是否检查文件名或时间戳。当你说“网站的时间戳”是什么意思?如果你看上面的网络来源,你可以看到时间“19-Jul-2011 03:32”与“CVP-LATEST-5.3.0.37.iso”在同一行,这一次只是文件更新时间。我想知道以历元形式获取时间并与存储的时间进行比较,而不是获取文件名(CVP-LATEST-5.3.0.37.iso)并对其进行比较,这是不是一个好主意。
/href="([^"]*)"/i