PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl menü .. dateien löschen verzeichnis auslesen


K21
24.04.2002, 14:17
Hi!
Ich habe ein Problem.
Ein (Perl-)Script soll ein Auswahlmenü erzeugen.
Dieses sollte in etwa so aussehen:


1) Port auswählen
2) Beenden

1--> 1) Port 1
2) Port 2
3) Port 3
4) Port 4


1--> 1--> 1)Datei A löschen
--> 2) Datei X löschen
--> 3) Datei Y löschen
--> 4) Datei Z löschen


Die Dateien die zur Auswahl stehen gelöscht zu werden soll Perl aus einem Verzeichnis auslesen. Sie heissen für Port1: 1_xxxx und für Port 2 2_xxxx
Also ich wähle z.B. Port1 aus und möchte Datei X löschen (muss vorhanden sein da sie sonst nicht in der auswahl auftauchen dürfte).
Dies alles geschieht auf einem Linux (Debian) OS.
Hat wer ne Idee wie ich das machen kann?

also ob datei a existiert würde ich in etwa so machen: if datei!=0 print "datei vorhanden"
oder etwa:
--
opendir(PFAD, "/var/tmp");
@inhalt=readdir(PFAD);
closedir(PFAD);
--
also vom prinzip her :)
nur irgendwie fallen mir im mom keine lösungsansätze ein für das weitere ein....


Jonas
25.04.2002, 16:44
oh naja, ganz so einfach is das nich, aber ich versuch´s mal in kurzform:

erstma musst daß verzeichnis auslesen, und rauskriegen, für welchen port es dateien gibt, dann die ports halt anzeigen, dann, je nachdem was gewählt wurde, nur diese dateien auslesen, anzeigen und dann evtl löschen.

ich versuch das hier mal, musst halt selbst debuggen etc ;)


print "1: Port auswählen\n2: Beenden\n\nAuswahl:";

my $ausw = <>;
chomp($ausw);

if($ausw eq &quot;1&quot;)

opendir(PFAD, &quot;/var/tmp&quot;);
my @inhalt=readdir(PFAD);
closedir(PFAD);

my @ports;
print &quot;\n\nBitte Port auswaehlen:\n\n&quot;;
foreach(@inhalt) {
my $port = substr($_,0,1);
$ports[$port] = $port . &quot;: Port &quot; . $port . &quot;\n&quot;;
}

foreach(@ports) { print $_; } # Wird gemacht, damit es keine doppelten Einträge gibt
print &quot;\nAuswahl: &quot;;
my $ausw = <>;
chomp($ausw);

my $i = 0;
my @portfiles;
print &quot;\n\nBitte Datei zum loeschen auswaehlen:\n\n&quot;;
foreach(@inhalt) {
my $port = substr($_,0,1);
if($port == $ausw) { $portfiles[$i] = $i . &quot;: Datei &acute;&quot; . $_ . &quot;&acute; loeschen\n&quot;;
}

foreach(@portfiles) { print $_; }
print &quot;\nAuswahl: &quot;;
my $ausw = <>;
chomp($ausw);

unlink(&quot;/var/tmp&quot; . $portfiles[$ausw]);


Das is grad nur so im Browser getippt und nicht überprüft, aber kannst ja mal damit versuchen....

K21
29.04.2002, 14:49
yo danke!
habs zwar anders gelöst aber dein ansatz hat mir ein paar ansätze gegeben ;)