Hallo Leute,
ich habe hier ein kleines Problem: Ich möchte alle Bilder in einem Verzeichnis nacheinander mit einem Bildbetrachter öffnen und dann für jedes Bild entscheiden, ob ich es umbenennen will oder nicht. Letzteres soll durch simple Benutzereingabe passieren. (Ich arbeite unter Linux auf der Kommandozeile.)
Das Problem ist, dass das Skript die Benutzereingabe nicht abwartet, die Variable
$in ist also immer leer und erzeugt diese Ausgabe:
Datei "Auswahl_006.png"...
Use of uninitialized value $in in chomp at ./bilder.pl line 20.
Use of uninitialized value $in in string eq at ./bilder.pl line 22.
Use of uninitialized value $in in string eq at ./bilder.pl line 25.
Hier ist mein Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use warnings;
use strict;
my @filenames = ();
## read filenames
while(<>){
chomp;
push ( @filenames, $_);
}
## check filenames
while ( my $file = pop(@filenames) ){
print "Datei \"$file\"...\n";
system("eog $file");
print "Umbenennen? j/n [n] ";
chomp ( my $in = <>);
if ( $in eq "j" ){
print "ok\n";
}
elsif ( $in eq "q" ){
last;
}
}
Hier ist der Aufruf in der Linux-Kommandozeile:
ls -1 *.png | head -3 | ./bilder.pl
Hier ist die Ausgabe:
Datei "Auswahl_006.png"...
Use of uninitialized value $in in chomp at ./bilder.pl line 20.
Use of uninitialized value $in in string eq at ./bilder.pl line 22.
Use of uninitialized value $in in string eq at ./bilder.pl line 25.
Umbenennen? j/n [n] Datei "Auswahl_005.png"...
Use of uninitialized value $in in chomp at ./bilder.pl line 20.
Use of uninitialized value $in in string eq at ./bilder.pl line 22.
Use of uninitialized value $in in string eq at ./bilder.pl line 25.
Umbenennen? j/n [n] Datei "Auswahl_004.png"...
Use of uninitialized value $in in chomp at ./bilder.pl line 20.
Use of uninitialized value $in in string eq at ./bilder.pl line 22.
Use of uninitialized value $in in string eq at ./bilder.pl line 25.
Umbenennen? j/n [n]
Ich kriege jeweils ein Bild geöffnet, aber wenn ich den Bildbetrachter schließe, geht sofort das nächste Bild auf, ohne dass ich die Chance habe, eine Eingabe zu tätigen. Was mache ich falsch?
Last edited: 2018-01-02 12:45:32 +0100 (CET)