プロが教えるわが家の防犯対策術!

gazou_element.txtにurlを保存していて、それらを一つずつ取り出してダウンロードするようにしようとしているのですがError:Invalid argument at C:User~~~となってしまいます。
どうすればいいかよろしければお教え下さい。
use Encode;
use LWP::UserAgent;
use IPC::Open2;
use warnings;
$file = "gazou_element.txt";
open (IN, $file) or die "$!";
my @url =<IN> ;
my $time = time;

for(my $i = 0; $i < scalar(@url); $i++){
my $request = HTTP::Request->new('GET', $url[$i]);
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0');
my $response = $ua->request($request);
my $prefix = get_prefix($url[$i]);
my $count = $i + 1;

if($response->is_success){
open($OUT, ">","$time$i$prefix") or die("Error:$!");
binmode $OUT;
print $OUT $response->content;
close $OUT;
}else{
}
}

#拡張子を取得する
sub get_prefix{
my $url = shift;
my $start = rindex($url, ".");
my $end = length($url);
my $string = substr($url, $start, $end - $start);
return $string;
}

A 回答 (2件)

> Error:Invalid argument at C:User~~~となってしまいます。



この省略されている箇所に、行番号が書いてあるはずなのですが。
それは、どこなのでしょうか?
エラーメッセージのヒント無しにプログラムを読むのは面倒です。


> my @url =<IN> ;

<>で読み込んだときは、改行も含みます。
改行を取り除いている様子がありません
    • good
    • 0

よくわからんけど, 個人的には


open($OUT, ">","$time$i$prefix") or die("Error:$!");
のところを
open(my $OUT, ">","$time$i$prefix") or die("Error:$!");
としたい気分.

ちなみに拡張子を prefix と呼ぶことはあり得ないので, そこんところも気を付けるべし.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!