in reply to Delete files with Perl in Windows
Not related to your question, but do you really mean &PrintForm?
Calling a subroutine with the leading & and no arguments passes the calling sub's argument list. Since Perl passes sub arguments by reference, this can lead to some spooky action at a distance that can be very hard to debug. See perlsub for more details.
Consider this code:
my $critical_data = 'Original Value'; print "Begin: $critical_data\n"; &SubOne($critical_data); print "End: $critical_data\n"; sub SubOne { print "\tSubOne Got: @_\n"; &SubTwo; } sub SubTwo { print "\tSubTwo Got: @_\n"; $_[0] = 'pwned!'; } __END__ Begin: Original Value SubOne Got: Original Value SubTwo Got: Original Value End: pwned!
Compare the result of this code:
my $critical_data = 'Original Value'; print "Begin: $critical_data\n"; SubOne($critical_data); print "End: $critical_data\n"; sub SubOne { print "\tSubOne Got: @_\n"; SubTwo(); } sub SubTwo { print "\tSubTwo Got: @_\n"; $_[0] = 'pwned!'; } __END__ Begin: Original Value SubOne Got: Original Value SubTwo Got: End: Original Value
Which would you rather debug?
TGI says moo
|
---|