http://www.perlmonks.org?node_id=738780


in reply to Context: compile-time vs. run-time

String-eval is the only way to get run-time context resolving.

Replies are listed 'Best First'.
Re^2: Context: compile-time vs. run-time
by shmem (Chancellor) on Jan 25, 2009 at 19:22 UTC

    If that's the case, it isn't either - since first thing string eval does is to compile.

      I think he means to modify the code to eval.
      eval +($f > 0 ? '@a' : '$a' ) . ' = ("a", "b", "c")';
      But its still runtime for shmem :)
      D:\>cat shmem #!/usr/bin/perl print "Hi, i'm shmem, this is runtime for me\n"; eval "use shmem; its still runtime for shmem\n"; warn $@ if $@; D:\>perl shmem Hi, i'm shmem, this is runtime for me Can't locate shmem.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site +/lib .) at (eval 1) li ne 1. BEGIN failed--compilation aborted at (eval 1) line 1. D:\> D:\>cat shmem2 #!/usr/bin/perl print "Hi, i'm shmem, this is runtime for me\n"; eval "use CGI; its still runtime for shmem\n"; warn $@ if $@; D:\>perl shmem2 Hi, i'm shmem, this is runtime for me Can't locate object method "its" via package "still" (perhaps you forg +ot to load "still"?) at (eval 1) line 1. D:\>