UPDATE: Ignore this... I'm not sure how I missed that you were pointing out the bad example of how not to use @_.
You are passing @_ as the third argument to send_status_email followed by \@array2. Since @_ contains two items and send_status_email is expecting a scalar for the third argument, the second item in @_ is going into $ar_attachments. Here is one way to fix that:
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"; my $body = join '', @$message; print "Message <$body>\n"; foreach ( @$ar_attachments ) { print "ar: $_\n"; } print "***************** sub finished\n"; } __END__ To: xxx@yy.com Status: subject Message <this is a line this is a second line> ar: one ar: two ar: three ***************** sub finished
In reply to Re^3: Why are list items passed to die() combined into a string?
by Mr. Muskrat
in thread Why are list items passed to die() combined into a string?
by Lotus1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |