Thread array splitten und in string überführen (15 answers)
Opened by anou at 2010-10-31 20:53

Linuxer
 2010-10-31 23:17
#142374 #142374
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hm,

ich versuch mal auszudrücken, was ich bis jetzt so verstanden habe:

  • es liegt eine Datei vor, die zeilenweise 3 Werte enthält
  • ferner liegt ein Array vor, das pro Element einen String mit weiteren 6 Werten enthält
  • jeder Zeile der Datei soll ein Element des Array zugeordnet werden (also Zeile 1 <=> Element 1, usw.)
  • Zeile und String möchtest Du jeweils splitten und neu zusammensetzen.
  • die Elemente der Zeile sollen zwischen die Elemente 3 und 4 der Array-Elemente eingefügt werden


Dafür könnte mein Code aus msg #142370 schon als Grundlage dienen.
Er verbindet bisher allerdings jede Zeile der Datei mit jedem Element des Array.

edit: Und hier neuer Code:

Code (perl): (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
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

# datei oeffnen, etc.

my @array = (
    'a1 a2 a3 a4 a5 a6',
    'b1 b2 b3 b4 b5 b6',
);

# "datei" auslesen
while ( my $line = <DATA> ) {
    
    chomp $line;                # umbruch entfernen

    # Sollte 3 Felder (z.B. A,A1,A2) ergeben
    my @fields = split m{ }, $line;

    # fuer jede Zeile muss ein Element im Array sein; da hier
    # @array geleert wird, evtl. mit einer Kopie arbeiten
    if ( my $string = shift @array ) {

        # Array Element aufsplitten
        my @result = split m{ }, $string;

        # Zeilenfelder einfuegen
        splice( @result, 3, 0, @fields );

        # Ausgabe
        print join( ', ', @result ), "\n";
    }
    else {
        die "ERROR: Nicht genug Elemente im Array!\n";
    }
}

__DATA__
A1 A2 A3
B1 B2 B3
C1 C2 C3

Last edited: 2010-10-31 23:28:20 +0100 (CET)
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!

View full thread array splitten und in string überführen