Hi there,
I've got a strange problem with $_. It seems I do not understand
something which might be basic. Anyway, here is a minimal example.

#! /usr/bin/perl

use strict;
use warnings;
use 5.010;

sub sub1 {
  my $cmd = shift;

  print "Sub3: Issuing [$cmd]\n";
  open my $fh, '-|', "$cmd 2>&1" or die "open: $!";
  while ( <$fh> ) { print; }
  close $fh;
  return $? >> 8;
}

sub sub2 {
  my $cmd = shift;

  say "\nSub1 $cmd";
  return 1;
}


my @cmds = ( "uname -a", "date");

foreach ( @cmds ) { say sub1($_); };
foreach ( @cmds ) { say sub2($_); };

Running this gives:

Sub3: Issuing [uname -a]
Linux hogwart 3.0.0-14-generic-pae #23~lucid1-Ubuntu SMP Thu Dec 8
15:03:12 UTC 2011 i686 GNU/Linux 0
Sub3: Issuing [date]
Sun Mar  4 08:54:18 CET 2012
0
Use of uninitialized value $cmd in concatenation (.) or string
at ./foreach1.pl line 20.

Sub1 
1
Use of uninitialized value $cmd in concatenation (.) or string
at ./foreach1.pl line 20.

Sub1 
1


What am I doing wrong here?


-- 
Manfred





-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to