in reply to Re^2: Bad news for IO::Handle magic (SWYM or sink)
in thread Bad news for IO::Handle magic

#!/usr/bin/perl use strict; # For debugging: sub dump { my( $name, $ref ) = @_; require Data::Dumper; my $dumper = Data::Dumper->new( [$ref], [$name] ); $dumper->Indent(1)->Useqq(1)->Terse(1); print STDERR $dumper->Dump(); } my $foo = "Test value"; dump( foo => $foo ); # Should instead used: #&dump( foo => $foo ); # ...

produces:

abnormal program termination

Helpful, isn't it? I suspect quite a few people don't immediately see what the problem is. I also suspect that no small number of people could waste quite a bit of time trying to figure this problem out before the solution comes to them and they snack themselves in the forehead.

Adding the & or renaming the sub to debugDump or moving the sub to a module will solve the problem.

The problem is that dump is a built-in. I don't care to memorize the entire list of Perl built-ins nor to put my code at risk when new built-ins are added (rarely).

- tye