bradcathey has asked for the wisdom of the Perl Monks concerning the following question:
Part of my "re-learn Perl the right way" journey.
Very simple, I want to use an external file containing a subroutine called by my main script. At the same time, I'm trying to get my head around variable scoping, so may need help there. Have searched the literature (Camel, Llama, Sheep and PM) and can't find a simple explanation of how to put all the pieces together in a working model. Anyway, here's what I have for my main:
1. correct scoping? 2. correct set-up of external? 3. correct call of subroutine from main?
I figure it's easier than I think, just help get me on the right path. Thanks!
Very simple, I want to use an external file containing a subroutine called by my main script. At the same time, I'm trying to get my head around variable scoping, so may need help there. Have searched the literature (Camel, Llama, Sheep and PM) and can't find a simple explanation of how to put all the pieces together in a working model. Anyway, here's what I have for my main:
My external file ('validate.pm'):#!/usr/bin/perl print "Content-type: text/plain\n\n"; use strict; use CGI::Carp qw(fatalsToBrowser); use validate; my $the_time = "12:23 pm"; &val_time( $the_time ); $the_time = $val; if ($the_time) { print "$the_time\n" } else { print "error\n" }
When I run it, I get validate.pm did not return a true value at timeval.pl line 7. No surprise, but what am I missing:#!/usr/bin/perl our $val; sub val_time { $val = shift; $val = ($val =~ /^(\d{2}):(\d{2}) (am|pm)$/) ? "$1:$2 $3" : 1; }
1. correct scoping? 2. correct set-up of external? 3. correct call of subroutine from main?
I figure it's easier than I think, just help get me on the right path. Thanks!
Back to
Seekers of Perl Wisdom