Thread Stings vergleichen (11 answers)
Opened by Rennofen at 2017-10-12 22:23

lichtkind
 2017-10-13 15:05
#187516 #187516
User since
2004-03-22
5679 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
nagut du warst eine weile weg und kennstnicht die neusten tricks,
aber was ich eingangs verstand kann der code gar nicht leisten. Du willst ja alle Duplikate entfernen, was heisst: du musst beim "G123" alle vorherigen G-werte kennen um entscheiden zu können, ob der Wert übernommen wird oder nicht. $g kann nur einen wert beinhalten. Ansonst hab ich paar weitere Stellen vereinfacht:

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
#!/bin/perl
use v5.18;
use warnings;

my $filename = shift // '1001.nc';
my $arg1 = shift // 0;

open(my $fh, '<:encoding(UTF-8)', $filename) or die "Could not open file '$filename' $!";

my ($g, $f) = ('G', 'F');
while (my $row = <$fh>) {
    $row =~ s/\r?\n$//;
    my $newrow;
    for my $word (split / /, $row){
        given (substr($word, 0, 1)) {
            when ('N') { next if $arg1 == 1 }
            when ('G') { if ($word ne $g) { $g = $word } else { next } }
            when ('F') { if ($word ne $f) { $f = $word } else { next } }
        }
        $newrow .= " $word";
    }
    $newrow =~ s/^\s+|\s+$//g;
    say $newrow;
}

Last edited: 2017-10-13 15:43:35 +0200 (CEST)
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.

View full thread Stings vergleichen