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

regexp + löschen (Seite 2)



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
shaihulud
 2006-10-17 20:48
#70817 #70817
User since
2006-04-12
76 Artikel
BenutzerIn
[default_avatar]
lösung:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $suffix = '.JPL';
my $srcdir = $Zeilen[3]."/";
my @dateien = glob($srcdir."*$suffix");

for my $datei(@dateien){
   if(index($datei,"---") == length $srcdir ){ # line 63
       my $length = length $srcdir;
       (my $newname = $datei) =~ s/^.{$length}---/$srcdir/;
       rename ($datei,$newname);
       $datei = $newname;
}
   my $document;
   &functions(\$document,$datei,\%hash,$srcdir);
   push(@documentlist,$document);
}
\n\n

<!--EDIT|shaihulud|1161103721-->
Linuxer
 2006-10-17 21:26
#70818 #70818
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Hi,

hier noch mal ein Beispiel meinerseits, dass ohne Regex auskommt.
rename kann auch fehlschlagen, deshalb sollte es auf Erfolg geprüft werden.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/perl
# vi:ts=4 sw=4 et:
use strict;
use warnings;

# pfad
my $dir = '/path/to/';

# dateien
my @ff = (
'file.jpl',
'---file2.jpl',
);

# erstelle ein array mit absol. pfadangaben
my @files = map { $dir . $_ } @ff;

# wie lautet die unerwuenschte prefix?
my $what = '---';

FILE:
for ( @files ) {

# length nur einmal aufrufen
my $length = length( $dir );

# prefix gefunden?
if ( index( $_, $what ) == $length ) {

my $new = $_;
substr( $new, $length, length( $what ), '' );

if ( rename( $_, $new ) ) {
$_ = $new;
}
else {

warn "rename( $_, $new ) failed: $!\n";
# tu was im Fehlerfall
next FILE;
}
}

# weiterverarbeiten von $_
print $_, $/;
}


Falls Du mal Dateien "abc.JPL" und "---abc.JPL" hast, solltest Du bedenken, dass ein rename( '---abc.JPL', 'abc.JPL' ); die "abc.JPL" mit der umbenannten "---abc.JPL" überschreibt.
Das kann u.U. nicht so erwünscht sein!
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-10-17 14:55.