Schrift
[thread]8260[/thread]

Aufbereitung eines Directory-Inhalts zur Auswahl: Directory-Inhalt zur Auswahl anbieten



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2006-08-23 14:16
#69140 #69140
Ich möchte den Inhalt eines Verzeichnisses auflisten, die in diesem Verzeichnis befindlichen Dateien (beispielsweise alle *.txt Dateien) von 1 bis n automatisch durchnumerieren und dem Benutzer zur Auswahl anbieten.

Beispiel:
1) a.txt
2) b.txt
3) c.txt

Die entsprechende Auswahl soll dann einer Variable ($a) zugeordnet und weiterverarbeitet werden.
Ronnie
 2006-08-23 14:23
#69141 #69141
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Was hast du bis jetzt probiert? Wo ist das Problem?

EDIT: Es wird nicht empfohlen Variablen $a oder $b zu nennen, da diese Bezeichungen für z.B. sort spezielle Bedeutung haben.\n\n

<!--EDIT|Ronnie|1156328729-->
xalo
 2006-08-23 14:31
#69142 #69142
User since
2005-07-22
6 Artikel
BenutzerIn
[default_avatar]
Ich habe bisher nur begrenzt Shell-Programmierung gemacht und habe bei Perl so meine Probleme.

Shell:
select eingabe in A B C D ...
do
case "$eingabe" in
A) echo "xxxxx"
...
Ronnie
 2006-08-23 14:55
#69143 #69143
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
okay, dann hier mal ein Ansatz:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

my @txt_files = <*.txt>;

for (0..$#txt_files) {
print $_ . ")\t" . $txt_files[$_] . "\n";
}

print "Bitte wählen sie eine Datei aus: ";
my $sel = <STDIN>;
chomp($sel);
die "Keine gültige Eingabe!\n" unless $sel =~ /^\d+$/;
print $sel . "\t--\t" . $txt_files[$sel] . " wurde ausgewählt!\n";

EDIT: Danke an renee --> regex geändert!\n\n

<!--EDIT|Ronnie|1156331729-->
renee
 2006-08-23 15:05
#69144 #69144
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
unless $sel =~ /\d+/;


sollte besser
Code: (dl )
unless $sel =~ /^\d+$/;
sein...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2006-08-23 15:14
#69145 #69145
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
oh oh, ja da hast du Recht! Ich ändere das mal ab!
xalo
 2006-08-23 15:22
#69146 #69146
User since
2005-07-22
6 Artikel
BenutzerIn
[default_avatar]
Sieht gut aus.

Den Rest werde ich schon hinbekommen....Danke.
xalo
 2006-08-23 16:05
#69147 #69147
User since
2005-07-22
6 Artikel
BenutzerIn
[default_avatar]
.. habe noch eine Kleinigkeit (hoffe ich):

Wie bekomme ich die Files ohne den kompletten Pfad aufgelistet, also ohne "C:/files/":

0) C:/files/abc.txt
1) C:/files/def.txt
2) C:/files/ghi.txt
Ronnie
 2006-08-23 16:11
#69148 #69148
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Die Funktion basename aus CPAN:File::Basename ist eine Möglichkeit:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use File::Basename;

my @files = (
'C:/files/abc.txt',
'C:/files/def.txt',
'C:/files/ghi.txt',
);

@files = map { basename $_ } @files;

die Dumper \@files;
renee
 2006-08-23 16:12
#69149 #69149
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;
use File::Basename;

my @txt_files = <*.txt>;

for (0..$#txt_files) {
print $_ . ")\t" . basename($txt_files[$_]) . "\n";
}

print "Bitte wählen sie eine Datei aus: ";
my $sel = <STDIN>;
chomp($sel);
die "Keine gültige Eingabe!\n" unless $sel =~ /^\d+$/;
print $sel . "\t--\t" . $txt_files[$sel] . " wurde ausgewählt!\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-08-23 14:16.