Posted on 2004-01-19 22:55:53, modified on 2006-01-09 16:29:21
Tags: Coding, Perl
A friend of me came up with this piece of code: (click on URL later). If you run it (with 5.6.1 or 5.8) it will complain that $c isn't specified. But then, if you rename the *c and $c to *b and $b, the program suddenly works.
This is even worse than black magic....
(now rename the "local *c" to "local *b" and "$c" to "$b"...)#!/usr/bin/perl -w use strict; package testexport; sub testing { my $KEY = shift; print "KEY=[$KEY]\n"; my $a = $::TEST_SINGLE; print "a=[$a]\n"; # my $b = eval "\$::$KEY"; # print "b=[$b]\n"; no strict 'refs'; local *c = $::{$KEY}; use strict 'refs'; print "c=[$c]\n"; } package main; $main::TEST_SINGLE = "hallo"; #my $TEST_SINGLE = "hallo"; testexport::testing("TEST_SINGLE");