in reply to Help with Web Scraping Script - Updated

Hello EagerforPerl,

Your program does not compile:

Global symbol "$directory" requires explicit package name (did you for +get to declare "my $directory"?) at 1201637.pl line 25. Global symbol "$directory" requires explicit package name (did you for +get to declare "my $directory"?) at 1201637.pl line 26. 1201637.pl had compilation errors.
This is because the unless block creates scope around the contents of the block outside which the lexically declared variables are not accessible:
$ perl -Mstrict -wlE 'unless (0) { my $foo = 42 }; say $foo' Global symbol "$foo" requires explicit package name (did you forget to + declare "my $foo"?) at -e line 1. Execution of -e aborted due to compilation errors.
If I change the code for opening the directory to:
opendir my $directory, 'C:\\Program Files\\OSNE' or die("Unable to open directory 'C:\\Program Files\\OSNE'\n");
... then I get a warning:
Name "main::OUTPUT" used only once: possible typo at 1201637.pl line 3 +4. 1201637.pl syntax OK
This is because you open your filehandle as $output but try to use it as OUTPUT ...

Also please consider that most websites don't appreciate repeated or frequent polling; I would recommend no more than a daily check if you simply want to see whether a site has new pages.


The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^2: Help with Web Scraping Script
by EagerforPerl (Novice) on Oct 19, 2017 at 19:17 UTC
    I appreciate your response. The problem with the handle arose when I was trying to implement what the first reply suggested, and I missed one of the instances of OUTPUT, which I have fixed. Still doesn't work though. About your concern in regards to frequent polling, this is going to no more than 5 people including myself and we don't plan on using it for very long. This is really just something I'm trying to do for practice. I of course don't want to unknowingly denial of service somebody's website.