2011-07-22 9 views
1

ウェブサイトからファイルをダウンロードしようとしています。 しかし、私はファイルのバージョンが私が持っているのと同じファイルより最新の場合にのみダウンロードしたいと思います。perlを使用して文字列中の未知の部分文字列を検索する

ファイル名はCTP-Latest5.0.37.iso

である私は、ファイル名に文字列「37」をチェックする必要があります。

したがって、数値37がImのバージョンよりも大きい場合は、ダウンロードするだけです。私はそれを私がバージョンここ

をチェックするためのperlのコードを実行したときに私のコードImがでしようとしている次の時間を読むことができるように

私は文字列を格納するファイルをダウンロードすると「37」のファイルです

#!/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など)

コードの残りの部分をどうやって手助けできますか?

+0

ちょっとイゴール、Webサイトには他のファイルがありますが、私は唯一のファイル "CTP-LATEST-5.3.0"が必要です。 – mac

+0

mac、私はそれに応じて答えを編集しました。私はあなたがリンク上の資料を読んで、あなたが必要とする正確な論理を書くことをお勧めします。 –

答えて

0

Regexworkを行う必要があります。


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; 
} 
+0

これは私のために働いていない、私は$ some_version_numberと何も印刷されていないpritingしようとしました。 – mac

+0

これは私のために働いていない、私は$ some_version_numberと何も印刷されていないpritingしようとしました。 "some_version_number" .iso。 – mac

+0

この回答のコードには構文エラーがありますif()_requires_ aブロック。PerlはCではありません:-) – tadmc

関連する問題