in reply to Re: Why are list items passed to die() combined into a string?
in thread Why are list items passed to die() combined into a string?
roboticus wrote:
If you check the docs (perldoc -f die), you'll see that's the intended behavior. ...
Actually, I did read the perldoc for die and the only thing I saw about stringification was this:
Because Perl stringifies uncaught exception messages before display, you'll probably want to overload stringification operations on exception objects.
That isn't exactly obvious that it has anything to do with @_ or that die() is doing anything or what the intended behavior is with respect to @_.
... It's not "bad practice" to pass in a list.
The reason I asked about "bad practice" is shown in the example below. Passing a list to a parameter will cause the second element of the list to go to the next parameter. In the original example it appears that @_ is always just a single item but this is confusing for anyone who maintains or reuses this code. I guess I just answered my own question; This is a very bad practice.
use strict; use warnings; my @array1 = ( "this is a line\n", "this is a second line"); my @array2 = qw( one two three); sub1 ( @array1 ); sub sub1 { send_status_email('xxx@yy.com', 'subject',@_, \@array2); } sub send_status_email { my ($to_address, $status, $message, $ar_attachments ) = @_; print "To: $to_address\n"; print "Status: $status\n"; print "Message <$message>\n"; foreach ( @$ar_attachments ) { print "ar: $_\n"; } print "***************** sub finished\n"; } __END__ ** output ** To: xxx@yy.com Status: subject Message <this is a line > Can't use string ("this is a second line") as an ARRAY ref while "stri +ct refs" in use at C:\usr\dms\perl\test_sub_array.pl line 20.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Why are list items passed to die() combined into a string?
by Mr. Muskrat (Canon) on Jan 29, 2015 at 22:23 UTC |