Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9069[/thread]

Löschen mit unlink

Leser: 1


<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten
yasukatakaya
 2007-06-06 10:36
#77269 #77269
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,
kann man mit Perl eine Datei öffnen, wenn in der Datei ein bestimmtes Wort nicht dabei ist, kann ich dann diese Datei löschen???
Ich grad versucht die Datei zu löschen, so klappt es:

Code: (dl )
1
2
3
4
5
6
7
8
$quelle = $ARGV[0];
$x = $ARGV[0];
$x =~ s/(\w+)\.\w+/$1/;
$ziel = $x;


unlink ("$quelle");
open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";


doch wenn ich unlink nach dem open(.....); schreibe, löscht er die Datei nicht, heisst es, dass geöffnete Dateien nicht gelöscht werden können und somit auch nicht nach bestimmten Wörtern durchsucht werden können????
nepos
 2007-06-06 10:43
#77270 #77270
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, überleg doch mal logisch. Du musst die Datei zum Durchsuchen öffnen. Dann gehst du ihren Inhalt durch, und merkst dir, ob du dein Wort gefunden hast.
Wenn du dann die Datei komplett gelesen hast, machst du sie mit close() wieder zu.
Danach schaust du dann, ob dein Flag für "Word gefunden" gesetzt ist. Wenn nicht, machst du den unlink auf die Datei.

Dein Code oben löscht jede Datei und versucht anschließend, die gelöschte Datei aufzumachen. Sicher nicht das, was du wolltest ;)
renee
 2007-06-06 10:43
#77271 #77271
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann lösch doch nach dem einlesen...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$quelle = $ARGV[0];
$x = $ARGV[0];
$x =~ s/(\w+)\.\w+/$1/;
$ziel = $x;


my $bool = 1;
open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
while( my $line = <$INPUT> ){
    if( $line =~ /irgendwas/ ){
        $bool = 0;
    }
}
close $INPUT;

unlink ($quelle) if $bool;
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/
pq
 2007-06-06 12:59
#77272 #77272
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich werde hier auch den titel ändern und die grossbuchstaben ersetzen.
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
bloonix
 2007-06-06 14:28
#77273 #77273
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,06.06.2007, 08:43]
Code (perl): (dl )
$bool = 0;
[/quote]
Hiernach würde ich noch mit "last" aus der Schleife springen, wenn nichts
mehr benötigt wird.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
RPerl
 2007-06-06 18:29
#77274 #77274
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Ist $bool, wenn man es in der Schleife benutzt, ueberhaupt verfuegbar fuer?

Code (perl): (dl )
unlink ($quelle) if $bool;


..?!

// EDIT:

Code (perl): (dl )
$line =~ /irgendwas/  ? $bool = 0 : $bool = 1;


Koennte man noch anstatt renee's if konstruktion nehmen.
Oder?\n\n

<!--EDIT|RPerl|1181141898-->
styx-cc
 2007-06-06 19:05
#77275 #77275
User since
2006-05-20
533 Artikel
BenutzerIn

user image
>Ist $bool, wenn man es in der Schleife benutzt, ueberhaupt verfuegbar fuer?

Ja, da es außerhalb der Schleife deklariert wurde.

Und
Code: (dl )
$line =~ /irgendwas/  ? $bool = 0 : $bool = 1;
geht auch =)

MfG
Pörl.
RPerl
 2007-06-06 19:11
#77276 #77276
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Ja, aber innerhalb der Schleife wird es geaendert, das gilt auch?\n\n

<!--EDIT|RPerl|1181143187-->
styx-cc
 2007-06-06 19:17
#77277 #77277
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Ja, probiers doch einfach aus:

Code: (dl )
1
2
3
4
5
6
my $bool = 0;
while (1) {
$bool = 1;
last;
}
print "$bool\n";
Pörl.
PerlProfi
 2007-06-06 19:21
#77278 #77278
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
[quote=RPerl,06.06.2007, 16:29]// EDIT:

Code (perl): (dl )
$line =~ /irgendwas/  ? $bool = 0 : $bool = 1;


Koennte man noch anstatt renee's if konstruktion nehmen.
Oder?[/quote]
Das würde ich eher so machen:
Code: (dl )
$bool = $line =~ /irgendwas/;


Oder, um die Zuweisung deutlicher zu machen:
Code: (dl )
$bool = $line =~ /irgendwas/ ? 1 : 0;


MfG
<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten



View all threads created 2007-06-06 10:36.