Schrift
[thread]8013[/thread]

File::remove: need example

Leser: 1


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
honky
 2006-05-23 15:04
#66518 #66518
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
Hallo!

Kann man jemand mal ein Beispiel für das Modul File::remove schreiben?

bei mir schauts bisher so aus, aber er macht nichts. Keine Meldungen :(

Code: (dl )
1
2
3
4
5
sub filedelete {

remove \1, qw('C:\data\bla');

}


danke für jede hilfe,

Honky
Thorium
 2006-05-23 15:12
#66519 #66519
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
    use File::Remove qw(remove);

# removes (without recursion) several files
remove qw( *.c *.pl );

# removes (with recursion) several directories
remove \1, qw( directory1 directory2 );

# removes (with recursion) several files and directories
remove \1, qw( file1 file2 directory1 *~ );

# trashes (with support for undeleting later) several files
trash qw( *~ );


Dein Beispiel macht keinen Sinn...
\1 bedeutet, dass du rekursiv löschst - bei nur einer Datei musst du nicht rekursiv löschen - das macht den Operator nur unleserlich. (Nebenbeibemerkt ist die Abhandlung des Moduls ziemlich schäbig).

qw() heisst quote words, es ist ein Operator welcher also alle nachstehenden Wörter als Elemente eines anonymen Arrays ansieht. Dein Element ist nun 'C:\data\bla' (inclusive '), was du sicherlich nicht willst.
Was du willst ist das:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use warnings;
use strict;
use File::Remove qw(remove);

sub deletefile {
my $filename = shift;

unless ($filename) {
warn "deletefile: Kein Filename angegeben";
return;
}

unless (-f $filename) {
warn "deletefile: '$filename' existiert nicht";
return;
}

unless ( remove($filename) ) {
warn "deletefile: Konnte '$filename' nicht löschen: $!";
return;
}

return 1;
}
\n\n

<!--EDIT|Thorium|1148383021-->
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
honky
 2006-05-23 15:55
#66520 #66520
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
ich will aber nicht nur eine datei löschen, sondern ein ganzes verzeichnis names bla :)

achso und die hilfe habsch auch bei cpan gelsen. die wende ich ja auch so an, siehe mein code. ich will ja nur wissen warum da nichts passiert.

danke :)
GwenDragon
 2006-05-23 16:21
#66521 #66521
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Es gibt bei dir aber kein Verzeichnis 'C:\data\bla'!

Das muss
Code: (dl )
1
2
3
qw( C:\data\bla ); 
#oder
('C:\data\bla')

sein!

Du hast falsch gequotet ;)\n\n

<!--EDIT|GwenDragon|1148387106-->
pq
 2006-05-23 16:51
#66522 #66522
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Thorium,23.05.2006, 13:12]qw() heisst quote words, es ist ein Operator welcher also alle nachstehenden Wörter als Elemente eines anonymen Arrays ansieht.[/quote]
qw() ist eine liste. weder ein array noch anynoym, bzw. eine liste ist
sozusagen immer anonym.
deswegen ist z.B. print scalar qw(a b c) was anderes als
@a = qw(a b c); print scalar @a
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
GwenDragon
 2006-05-23 16:58
#66523 #66523
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
perlop schreibt:
Quote
qw/STRING/

Evaluates to a list of the words extracted out of STRING, using embedded whitespace as the word delimiters. It can be understood as being roughly equivalent to:
split(' ', q/STRING/);

Das bedeutet, dass eine Liste aus dem Muster erzeugt wird, wobei das Leerzeichen als Wortgrenze angesehen wird.
honky
 2006-05-23 17:14
#66524 #66524
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,23.May.2006, 14:21]Es gibt bei dir aber kein Verzeichnis 'C:\data\bla'!

Das muss
Code: (dl )
1
2
3
qw( C:\data\bla ); 
#oder
('C:\data\bla')

sein!

Du hast falsch gequotet ;)[/quote]
also sry, ich raffs net.

wo liegt der untersheid zwischen

Code: (dl )
1
2
3
qw( C:\data\bla ); 
#oder
('C:\data\bla')


und

'C:\data\bla' ?

*verwirrt bin*


also jetzt isses so, und wie muesste es geschrieben stehen?

Code: (dl )
1
2
3
4
5
sub filedelete {

remove \1, qw('C:\data\bla');

}
dann seh ich vielleicht den fehler.. :)\n\n

<!--EDIT|honky|1148390206-->
GwenDragon
 2006-05-23 17:27
#66525 #66525
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
qw ( 'C:\data\blah' ) ist "'C:\data\blah'"
qw ( C:\data\blah ) ist "C:\data\blah"\n\n

<!--EDIT|GwenDragon|1148390913-->
honky
 2006-05-23 17:45
#66526 #66526
User since
2006-05-23
43 Artikel
BenutzerIn
[default_avatar]
also ich schein mich ja zu doof anzustellen ^^ *gg*,

aber jetzt habe ich es so gemacht und er will den ordner mit all seinen Inhalten einfach nich löschen.

Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;
filedelete();

sub filedelete {

    use File::Remove qw(remove);
    remove \1, "'C:\Entwicklung\Perl\projects\Testen\bla'";

}


wo liegt der fehler :)\n\n

<!--EDIT|honky|1148391976-->
GwenDragon
 2006-05-23 17:48
#66527 #66527
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Nein.
Ohne die ' im Dateinamen! :rock:

entweder

Code: (dl )
remove \1, qw( C:\Das\istder\Pfad );

oder
Code: (dl )
remove \1, ( 'C:\Das\istder\Pfad' );


Irgendwie habe ich mich wohl unverständlich ausgedrückt, oder?

/Edit: Fehler ausgebessert.\n\n

<!--EDIT|GwenDragon|1148393415-->
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-05-23 15:04.