Schrift
[thread]8671[/thread]

daten parsen...



<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-01-23 11:18
#73499 #73499
Hy,

habe folgendes Problem:
Ich lese eine Datei (dateiname.txt) aus, die folgenden Inhalt hat:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[ITI]
FileName.xls
FileName.xls

[ITE]
FileName.xls
FileName.xls
FileName.xls
FileName.xls

[ITA]
FileName.xls
FileName.xls
FileName.xls

[ITA1]
FileName.xls
FileName.xls
FileName.xls



Nun möchte ich die Datei so auslesen, dass die 'Tags' [ITI] gefunden werden, ein Verzeichnis angelegt wird. das in dem Fall ITI heißt und alles, was unter diesem 'Tag' steht, in den angelegten Ordner kopiert wird.

Danke schon mal für Hilfe...

Gruß
renee
 2007-01-23 11:39
#73500 #73500
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was hast Du denn bisher versucht?

Zum Einlesen von Blöcken solltest Du $/ verändern (siehe perlvar).

Anlegen eines Ordners: mkdir (<!--pod_f1--><a href="//perldoc.perl.org/functions/mkdir.html" target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--pod_f2-->-f mkdir<!--pod_f3--></a><!--pod_f4-->)
Kopieren von Dateien: CPAN:File::Copy.

Schau Dir z.B. mal diesen Thread an: http://board.perl-community.de/cgi-bin....;t=3648\n\n

<!--EDIT|renee|1169545222-->
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/
cytrics
 2007-01-23 12:08
#73501 #73501
User since
2006-08-30
8 Artikel
BenutzerIn
[default_avatar]
Hy,

ja, so ungefähr wie in dem anderen Thread soll es funktionieren...

Nur weiß ich leider nicht, wie die 'Tags' z.B. --> [ITI] heißen.
Diese können manuell erweitert werden.

Gruß
renee
 2007-01-23 12:36
#73502 #73502
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use File::Copy qw(cp);

# Datei die überprüft werden soll
my $file = '/path/to/file';

{
open my $fh, '<',$file or die $!;
local $/ = "\n\n"; # $/ auf "Leerzeile" setzen
while(my $entry = <$fh>){
my ($key,@lines) = split /\n/,$entry;
$key =~ s!\[(.*?)\]!$1!;
mkdir $key;
for my $line(@lines){
cp $line, $key.'/'.$line;
}
}
close $fh;
}
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/
cytrics
 2007-01-23 13:09
#73503 #73503
User since
2006-08-30
8 Artikel
BenutzerIn
[default_avatar]
cool, danke..

Damit kann ich super weiterarbeiten...

Gruß
Dubu
 2007-01-27 00:39
#73504 #73504
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=renee,23.01.2007, 11:36]
Code: (dl )
1
2
3
[...]
  local $/ = "\n\n"; # $/ auf "Leerzeile" setzen
[...]
[/quote]
Ich empfehle, statt $/="\n\n" einen Leerstring als Trenner zu nehmen: $/="". Dieser hat einen "magischen" Effekt: Wenn mehr als eine Leerzeile zwischen den Blöcken vorkommt, erhält man im ersten Fall einen leeren Block, während letzteres automatisch die Leerzeilen zusammenfasst und die Blöcke korrekt trennt.
<< >> 6 Einträge, 1 Seite



View all threads created 2007-01-23 11:18.