[Vienna-pm] Nachtrag zu Escapen von Shellparametern: Fehler oder Feature?

Calli gooly at gmx.at
Mon May 5 04:34:30 PDT 2008


Am Montag, 28. April 2008 schrieb Josef Schmid:
> Stefan Weiss schrieb:
> ich glaub ab 5.6 (oder ab 5.8?)
> my $result=do {
>    open(my $fh,'-|','faxjob','--from',$from,'--faxnum',$num,...) or
> die; local $/; <$fh>
> };
>
hab das mal versucht mit `curl -I` - hmm:
also aus der Schleife 1 (s.u) liefert die Zeile
	 open(my $fh,'-|','curl', '-I',$u )
auf der Konsole einen unerwünschten overhead:
   % Total    % Received % Xferd  Average Speed ..
   ...
   0 20891    0     0    ...
Die Gleiche kommt bei Schleife 2 (s.u.) mit Zeile:
  my $size = $1 
              if ( `curl -I $u` =~ /.+?Length:\D*?(\d+)\D*/g );

Mit einem 2>/dev/null kann ich den verhindern, aber nur bei version 2 
bzw. Schleife 3:
 my $size = $1 
              if ( `curl -I $u 2>/dev/null` 
                     =~ /.+?Length:\D*?(\d+)\D*/ );

Hier 
     open(my $fh,'-|','curl', '-I',$u,'2>/dev/null/' ) or die "uups";
klappt das nicht - warum?
 

# die Schleife 1
   foreach my $u ( @urls ) {
         my $size = do {# , '|','grep','Length'
            open(my $fh,'-|','curl', '-I',$u ) or die "uups";
            local $/; local $_ = <$fh>;
            /.+?Length:\D*?(\d+)\D*/;
            $1;
         };
         print "$u => $size b\n";
         last;
      } else  {
         print "\n$u  => "
      }
   }

# Schleife 2
   foreach my $u ( @urls ) {
         my $size = $1 
              if ( `curl -I $u` =~ /.+?Length:\D*?(\d+)\D*/g );
         print "$u  => $size b\n";
   }



# Schleife 3
   foreach my $u ( @urls ) {
         my $size = $1 
              if ( `curl -I $u 2>/dev/null` 
                     =~ /.+?Length:\D*?(\d+)\D*/ );
         print "$u  => $size b\n";
   }


More information about the Vienna-pm mailing list