Peter Farrar wrote:
> 
> Hi All,
> 
> I swear I've called subroutines this way before, but I can't find any
> examples.
> In this case, I'm looking to build some time/date functions.  Regardless of
> what the actual code is supposed to do, the calling of subroutines as
> elements of a hash is causing me grief.  I am receiving the following
> message:
> 
>       Undefined subroutine &main:: called at D:
> \perldev\workroom\dates\dates.pl line 16.
> 
> Here is the code.  Can anyone see what I am doing wrong here???
> 
> TIA,
> Peter
> 
> P.S. you can see where I comment out the ccyymmdd_now function.  That
> approach works, but is not what I'm shooting for.
> 
> %date_formats = (

Make sure you declare %date_formats before you assign to it so the
'yyyymmdd' key will see it.

my %date_formats;

%date_formats = (


> #     "ccyymmdd" => {now => \ccyymmdd_now()},

 #     ccyymmdd => { now => \&ccyymmdd_now },


>       "ccyymmdd" => {now => sub {
>                         my @arr = localtime();
>                         1900 + $arr[5] . sprintf("%02d",$arr[4] + 1) .
> sprintf("%02d",$arr[3]);

                        sprintf '%d%02d%02d', 1900 + $arr[5], $arr[4] +
1, $arr[3];


>                   }
>             },
> 
>       "yyyymmdd" => {now => ${$formats{"ccyymmdd"}}{now},},

        yyyymmdd => { now => $date_formats{ccyymmdd}{now} },


> );
> 
> sub now {
>       my $format = shift;
>       $format =~ tr/A-Z/a-z/;

        my $format = lc shift;


>       if (exists $date_formats{$format}){
>             # Not working...
>             &{${$date_format{$format}}{now}}();

              $date_formats{$format}{now}->();


>       }else{
>             print STDERR "invalid format\n";
>       }
> 
> }
> 
> #print "|" .  ccyymmdd_now() . "|\n";
> print "|" . now("ccyymmdd") . "|\n";
> <STDIN>;
> 
> sub ccyymmdd_now{
>       my @arr = localtime();
>       1900 + $arr[5] . sprintf("%02d",$arr[4] + 1) . sprintf
> ("%02d",$arr[3]);
> }
> 
> __END__


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to