in reply to Can't Reference a Sub by Variable when using Strict
Would someone mind explaining to me why this is?
Because that is what strict was designed to do! You are using a symbolic reference which is almost always a bad idea. You can use hard refs (code refercences in this case) with strict perfectly OK. Perhaps you wanted something like this for use as a dispatch table:
#!/usr/bin/perl -w use strict; my %lists = ( 'test1' => { func => \&test1, data => 'stuff' }, 'test2' => { func => \&test2, data => 'things' }, ); for my $key (keys %lists) { my $code_ref = $lists{$key}->{func}; my $data = $lists{$key}->{data}; &$code_ref($data); # or use this syntax: $code_ref->($data); } sub test1 { print "New message '$_[0]' for test1\n"; } sub test2 { print "New message '$_[0]' for test2\n"; } __DATA__ New message 'stuff' for test1 New message 'things' for test2
cheers
tachyon
|
|---|