使用perl搜索字符串中的未知子字符串

时间:2011-07-22 06:29:51

标签: string perl

我试图从网站下载文件。 但我只想在文件版本最新的时候才下载。

文件名为CTP-Latest5.0.37.iso

我需要检查文件名中的字符串“37”。

因此,如果数字37大于我已经拥有的版本那么只有我下载。

下载文件后,我想存储字符串“37”是一个文件,以便下次运行perl代码检查版本时可以读取它

这是我尝试的代码

#!/usr/bin/perl
use LWP::Simple;
 #my $version =37;//this whole line is commented
Open file version.txt and get the version number(say 37)and store it in $version    


$pageURL="http://www.google.comisos/psfsS5.3/LATIMGODCVP/"; 

$simplePage=get($pageURL);

Now $simplePage has the substring  "CTP-LATEST-5.3.0.(some_version_number).iso" 

I need to get that "some_version_number". HOW ?


if(some_version_numner > $version)

{


#-- fetch the zip and save it as perlhowto.zip
my $status = getstore("http://www.google.com/isos/psfsS5.3/LATIMGODCVP/CVP-LATEST-5.3.0."$version".iso", "CTP-Latest5.3.0.$version.iso");

if ( is_success($status) )
{
 print "file downloaded correctly\n";

 Store the "some_version_number in file version.txt (for next time use)

}
else
{
 print "error downloading file: $status\n";
 }

}

我希望代码中的一切都清晰。 version.txt只存储了1个字符串,可以是任意数字(例如37或45或89等)

有人可以帮我解决其余的代码吗?

1 个答案:

答案 0 :(得分:0)

Regex应该work


如果some_version_number只是数字,您可以执行以下操作:

if ($simplePage =~ /CTP-LATEST-5\.3\.0\.\((\d*)\)\.iso/)
{
    $some_version_number = $1;
}

如果不仅是数字,但simplePage中没有其他括号,您可以这样做:

if ($simplePage =~ /CTP-LATEST-5\.3\.0\.\((.*)\)\.iso/)
{
    $some_version_number = $1;
}