Thread Benutzereingabe in Schleife wird nicht abgewartet
(8 answers)
Opened by Uwe F. at 2018-01-02 11:38
Der Vollständigkeit halber:
Man könnte das Skript etwas umstellen und etwas Shell-Magie (bash) verwenden: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #! /usr/bin/perl use strict; use warnings; use 5.010; # input is specified as file arguments; read them manually without magic my @files; for my $file ( @ARGV ) { open my $fh, '<', $file; while ( my $file = <$fh> ) { push @files, $file; } } chomp( @files ); # show read filenames and ask for input for my $file ( @files ) { print "say something: "; chomp ( my $input = <STDIN> ); say "$file: $input"; } Aufruf dann mit: Code: (dl
)
perl t.pl <( ls -1 *.pl ) Das, was in <( ) steht, wird durch die Shell als Kommando ausgeführt (kann auch eine Verkettung wie ls -1 | head -n 3 sein) und die Ausgabe als (temporäre) Datei zur Verfügung gestellt. Ergebnis: Aber ganz ehrlich: Auch sowas würde ich nur im Notfall verwenden. Und dann wäre noch zu klären, wie dieser Notfall aussehen sollte... Besser ist es, auf den Ansatz zurückzugreifen, den hlubenow bereits aufzeigte, und selber die Dateinamen einzulesen und zu verarbeiten. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |