gnork has asked for the wisdom of the Perl Monks concerning the following question:

Dear monks!

I have written a wrapper for shared memory operations around IPC::Shareable. This sub ties the given vars (code is 'work in progress', suggestions welcome).
sub initial_tie { my ($aref, $what, $cont) = @_; my @do = @$aref; if (defined $what) { $cont && (undef $cont) || ($cont = 1); @do = splice(@do, $what, $cont) } while (@do) { my $data = shift @do; my $cmd; $cmd = "tie($data->[0], 'IPC::Shareable', {key => '$data->[1]', create => $data->[2], mode => $data->[3], size => $data->[4], destroy => $data->[5]});"; $result = eval $cmd; if ($data->[6]++ > 3) { &Log("*** initial_tie giving up on $data->[0] ***"); } elsif (not defined $result) { # create if necessary $data->[2] = 1; push(@do, $data); } } }

Unfortunately, this sub is in MyModule::Shmem, which is very restrictive about export (@EXPORT_OK used instead of @EXPORT). The vars to be tied in are not known at compile time.

Now for the question: How do I make the tied variable visible outside of MyModule::Shmem?

Rgds.
Gnork

cat /dev/world | perl -e "(/(^.*? \?) 42\!/) && (print $1))"
errors->(c)

Replies are listed 'Best First'.
Re: Dynamically export tied var in module
by gnork (Scribe) on Apr 21, 2004 at 09:26 UTC
    Would a push (@EXPORT, '$var'); do the trick?

    Gnork

    cat /dev/world | perl -e "(/(^.*? \?) 42\!/) && (print $1))"
    errors->(c)