Thread Arrayelement verändern (1 answers)
Opened by Sam at 2016-03-16 15:38

Linuxer
 2016-03-16 18:11
#184198 #184198
User since
2006-01-27
3779 articles
HausmeisterIn

user image
Naja, suche im zweiten Element und füge den Treffer beim ersten Element ein.

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
#! /usr/bin/perl
use strict;
use warnings;

my @array = (
    '0',
    '<VT>ABC</VT><!--Source:  ; ( ;)-->',
    '<VT>12 wert</VT><!--Source:  ; ( ;)-->',
);

my $i=0;

# Suche und fange ein, was innerhalb von <VT></VT> steht
if ( my ($catch) = $array[$i+2] =~ m{<VT>(.+?)</VT>} ) {
    warn "Catched: $catch\n";

    # fuege Fund vor </VT> im ersten String ein
    $array[$i+1] =~ s{</VT>}{$catch</VT>};
}

# Kontrollausgabe
require Data::Dumper;
print Data::Dumper->new( [ \@array ], [ '*array' ])->Dump();


Output:
Code: (dl )
1
2
3
4
5
6
Catched: 12 wert
@array = (
'0',
'<VT>ABC12 wert</VT><!--Source: ; ( ;)-->',
'<VT>12 wert</VT><!--Source: ; ( ;)-->'
);


Bei komplexeren Sachen wäre ein passender Parser wahrscheinlich sinnvoller (es schaut ja grob nach html/xml aus).

Doku-Hinweise:
Perldoc:perlretut
Perldoc:perlre
Perldoc:perlrequick

http://perl-tutorial.org/ -> Modern Perl
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 Arrayelement verändern