Thread Suchen: Suchen und löschen (29 answers)
Opened by Paul at 2006-09-11 16:00

Dubu
 2006-09-12 16:25
#69711 #69711
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=fraggs,11.09.2006, 15:02]
Code: (dl )
1
2
3
4
5
sub delete_files{
  my ($dir,$name) = @_;
  my ($basename) = basename($name);
  unlink $basename.'.'.$_ for(qw(log inx pdf));
}
[/quote]
Falshce Verwendung von File::Basename::basename().
Wenn man keine Suffixe angibt, werden auch keine abgeschnitten, also bleibt das .log dran. Andererseits würde ein Pfad vor dem Dateinamen abgeschnitten, wenn er denn da wäre - aber $dir wird ja komplett ignoriert, also werden so oder so nur Dateien im aktuellen Verzeichnis gelöscht. Hmm...

Wie wär's damit?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub delete_files{
   my ($dir,$name) = @_;
   # Endung .log abschneiden
   unless ($name =~ s/\.log$//) {
       warn "$name endet nicht auf .log, nichts gelöscht.\n";
       return;
   }
   for my $suffix (qw/log inx pdf/) {
       my $filepath = "$dir/$name.$suffix";
       unlink $filepath or warn "kann $filepath nicht löschen: $!\n";
   }
}

(ungetestet)

Wenn man's ganz ordentlich machen möchte, dann kann man die Dateipfade mit File::Basename und File::Spec zerpflücken und wieder zusammensetzen, aber dann bitte auch schon bei $dir im aufrufenden Programmteil.

View full thread Suchen: Suchen und löschen