Jeff Pang skrev:
Anders Hartman:
Hello,

I which to use eval to execute subroutines dynamically.

The following code snippet fails:


#!/usr/bin/perl

use strict;
use warnings;

sub asub {
  our $abc;
  print $abc;
}

my $abc = "abc\n";
eval "asub";
exit 0;


I don't think you want an eval here.

use strict;
use warnings;

our $abc = "abc\n";

sub asub {
  print $abc;
}

asub;


Also you may want to know something about Perl's variable scope, see:
http://perl.plover.com/FAQs/Namespaces.html.en

Thanks for the link above.
However, I DO need to use eval because the names of the functions to call
are determined dynamically at runtime.
A solution has been found: If I change the line

my $abc = "abc\n";

in the main program to

our $abc = "abc\n";

everything works. I don't quite see why though ;-)

/Anders

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to