Thread strings in array löschen (19 answers)
Opened by Iggy86 at 2012-08-13 13:46

Linuxer
 2012-08-13 15:01
#160869 #160869
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Einfacher Schnellschuß ohne Optimierung oder langes Grübeln, der auch Kommentare auf einer Zeile berücksichtigt.

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

my @data = (
    'eins',
    'zwei /*',
    'drei',
    'vier */',
    'fuenf /* bla */',
    'sechs /* foo */ sieben',
);


my $found = 0;
for my $element ( @data ) {
    # full comment
    if ( $element =~ s{ /\* .*? \*/ }{}x ) {
        next;
    }
    # beginning of comment
    if ( $element =~ s{ /\* .*? }{}x ) {
        $found = 1;
    }
    # end of comment
    elsif ( $element =~ s{ .*? \*/ }{}x ) {
        $found = 0;
    }
    # lines between beginning and end of comment
    elsif ( 1 == $found ) {
        $element = undef;
        next;
    }
}

# undefinierte und leere Elemente werden entfernt
@data = grep { defined $_  && 0 < length $_ } @data;


use Data::Dumper;
print Dumper \@data;


Resultat:
Code: (dl )
1
2
3
4
5
6
$VAR1 = [
'eins',
'zwei ',
'fuenf ',
'sechs sieben'
];
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 strings in array löschen