Schrift
[thread]10523[/thread]

Elemente in einer Zeile mit gleichmäßigem Abstand



<< >> 3 Einträge, 1 Seite
Pro_Galli
 2007-10-05 17:47
#100369 #100369
User since
2007-10-02
12 Artikel
BenutzerIn
[default_avatar]
Ich habe das folgende Problem und ist dass ich eine Text Datei eingelesen habe,
die Datei habe ich jetzt schon in einem Array gespeichert z.B. @datei und die
Sache ist, die Zeile sehen sehr Scheisse aus. Es gibt nicht einem gleichmäßigen
Absatnd zwischen jedem Element.Hier habe ich ein Teil eingefügt

Code: (dl )
1
2
3
4
5
6
7
8
200718XP2007_08_03(        )11:42:00 9min7sek 36671 Dateien 
200718XP 2007_08_03 15:10:29 8min33sek 36674 Dateien
200718XP 2007_08_03 15:59:36 7min50sek 36676 Dateien
200718XP 2007_08_04 04:30:08 7min40sek 36679 Dateien
200718XP 2007_08_04 07:54:25 8min23sek 36680 Dateien
200718XP 2007_08_05 04:31:06 8min59sek 36716 Dateien
200718XP 2007_08_06 04:31:16 9min14sek 36727 Dateien
200718XP 2007_08_07 04:31:22 8min36sek 36737 Dateien

Und nun will ich meine Liste eigentlich so sehen:

Code: (dl )
1
2
3
4
5
200718XP 2007_09_17 10:56:29 8min17sek 36770 Dateien
200718XP 2007_09_22 11:11:33 7min59sek 36771 Dateien
200718XP 2007_09_23 11:21:34 8min6sek 36772 Dateien
200718XP 2007_09_23 11:31:02 7min33sek 36772 Dateien
200718XP 2007_09_17 11:40:03 7min27sek 36772 Dateien


Ich habe ein Programm dafür geschrieben aber es ist zu groß und undeutlich.
Hier mein hässliches Programm

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (@neue_ganze_datei)
{
   @neue_zeile=();
   @split_zeile = split (//, $_);
   for ($j=0;$j<=$#split_zeile;$j++)
   {
      unless ( (@split_zeile[$j] =~ m/ /) and (@split_zeile[($j+1)] =~ m/ /) )
      {
         push (@neue_zeile, @split_zeile[$j]);
      }
   }
   $neue_zeile='';
   for (@neue_zeile)
   {
      $neue_zeile=$neue_zeile.$_;
   }
   push(@neue_zeilen,$neue_zeile); 
}


Die Sache ist, dass ich oft dieses Problem habe.
Hat jemand vielleicht eine schöne Lösung
Vielen Dank
renee
 2007-10-05 17:53
#100371 #100371
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;
use Tie::File;

my $file = 'filename.txt';

tie my @lines, 'Tie::File', $file or die $!;
for my $line ( @lines ){
    $line =~ s/^\s+|\s+$//;
    $line =~ s/\s+/ /g;
    $line =~ s/\(\s+\)/ /g;
}
untie @lines;


ungetestet
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/
moritz
 2007-10-05 18:09
#100373 #100373
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Du könntest probieren, CPAN:Text::Table zu benutzen. Wenn du die Datensätze aufspalten kannst, macht das daraus schön ausgerichtete Tabellen.
<< >> 3 Einträge, 1 Seite



View all threads created 2007-10-05 17:47.