Getting result from other perl script through system call -


i know can use require , in different fashion, i'm toying around perl , ran don't know how explain.

here's first script:

use 5.16.2; use warnings;  sub { print "hello"; }  get(); 

test script:

use 5.16.2; use warnings;  $val=system('perl test.pl'); print "$val\n";  #prints: hello0, surmised 0 return code system 

i looked how ignore 0 , got wrong, led me this:

print '', system('perl test.pl');  #also prints hello0  $val='', system('perl test.pl'); print "$val\n"; #prints: hello 

this works, have absolutely no idea why. i'm confused why 1 preceding didn't work. please explain?

this:

print '', system('perl test.pl'); 

calls print 2 arguments, namely '' (the empty string: no effect) , system('perl test.pl') (which evaluates 0, saw, provided perl test.pl runs successfully).

using more parentheses more explicit, can write above as:

print('', system('perl test.pl')); 

or can write as:

my $val = system 'perl test.pl'; # prints 'hello', sets $val 0 print '', $val; # prints 0 

this:

my $val='', system('perl test.pl'); 

declares $val local variable , sets '' (the empty string), , (unrelatedly) calls system('perl test.pl'). using parentheses explicitness:

(my $val = ''), system('perl test.pl'); 

or:

my $val = ''; system('perl test.pl'); # prints 'hello', discards exit-status 

Comments

Popular posts from this blog

php - cannot display multiple markers in google maps v3 from traceroute result -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -