Cy Kurtz wrote:
> I hope it's an easy one for you. It's not quite easy enough for me.
>
> I want to harvest some files from a website. The files are in this
> format:
>
> fooYYMMDD.ext, as in foo030901.ext for September 1st, 2003.
>
> To wget the first nine months of this daily file, I need a file that
> looks like this:
>
> http://basic.url/dir/foo030101.ext
> http://basic.url/dir/foo030102.ext
> http://basic.url/dir/foo030103.ext
> .
> .
> http://basic.url/dir/foo030901.ext
>
> I'm too lazy to type all of this, so I'm trying to use this little
> script to generate the file for me. It keeps tripping over the last
> close bracket. Can you tell me what I'm doing wrong here?
>
> Thanks,
>
> Cy Kurtz
>
> Here's my script:
>
> #!/usr/bin/env perl
> #
> open OUTFILE, ">output.txt" or die "Can't open output.txt: $!";
> while($month < 9)
> {
> while($day < 31)
> {
> print OUTFILE "http://basic.url/dir/file03,$month,$day,.ext,\n";
> continue
> $day++;
> }
> continue
> $month++;
> }
There's a few things wrong with your code:
- The 'continue' needs a code block following it, but you don't need
it anyway.
- You're not initialising $day and $month, so the first time around
'print' will try to print a value of 'undef'.
- you don't need the commas embedded in your output string.
- You're not printing leading zeroes on values less than 10.
- Most important of all, you don't start with
use strict;
use warnings;
The code below will do what you want.
HTH,
Rob
use strict;
use warnings;
open OUTFILE, '> output.txt' or die $!;
for my $month (1 .. 9) {
for my $day (1 .. 31) {
printf OUTFILE "http://basic.url/dir/file03%02d%02d.ext\n", $month, $day;
}
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]