Thread Benutzereingabe in Schleife wird nicht abgewartet (8 answers)
Opened by Uwe F. at 2018-01-02 11:38

Linuxer
 2018-01-02 18:30
#187868 #187868
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Oder etwas simpler als meine vorige Version. Benutze die Kommando-Substitution der Shell und übergebe die Dateinamen dadurch direkt als Argumentliste:

Code: (dl )
1
2
3
$ perl t.pl $( ls -1 *.pl | head -n 3 )
say something: booo
t.pl: booo


Im Gegensatz zur vorigen Version wird hier das Kommando in $( ) ausgeführt und die Ausgabe dann an diese Stelle gesetzt. Die Dateinamen erscheinen damit als Argumente für das Skript.

Das Perl-Skript lässt sich dann so schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /usr/bin/perl
use strict;
use warnings;
use 5.010;


# read file names from argument list
my @files = @ARGV;


for my $file ( @files ) {
    print "say something: ";
    chomp ( my $input = <STDIN> );

    say "$file: $input";
}
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!

View full thread Benutzereingabe in Schleife wird nicht abgewartet