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
sub Test {
my $zaehler=0;
my $DevAttr;
my $anzahl=0;
my $count=0;
my @Attr;
my @Value;
my @Selection;
my @userAttr;
my @test;
my $cmd="attr";
my $dev="Rollladensteuerung";
open(DATEI,"d:/perl/DevAttr.txt") or die "Couldn't open file $!";; # oeffne die Datei
while (<DATEI>) { # Zeilenwiese / solange noch Daten existieren
chop; # schneide LF ab; Zeile in $_
($Attr[$anzahl],$Value[$anzahl],$Selection[$anzahl++])=split(" ");# teile die Datenfelder wenn Leerzeichen vorkommt
}
close(DATEI); # schliesse die Datei
foreach $DevAttr (@Attr) { # machs fuer alle Datensaetze
print "$cmd $dev $Attr[$zaehler] $Value[$zaehler]\n";
$zaehler++; # Index erhoehen
}
}
Attribut1:xyz,xy Attribut2:nv Attribut3
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
#!/usr/bin/perl use strict; use warnings; my %attributes; for my $line (<DATA>) { #__DATA__ zeilenweise durchlaufen chomp $line; #Zeilenumbruch entfernen my @line_parts = split / /, $line; #Zeile in n Teile aufteilen my $identifier = shift @line_parts; #erstes Element von @line_parts als Bezeichner verwenden $attributes{$identifier} = \@line_parts; #Rest zuweisen print "$identifier: $attributes{$identifier}->[0]\n"; #Ausgabe1 } #Ausgabe2 for my $attr (sort keys %attributes) { print "$attr"; print ":" . (@{ $attributes{$attr} })[1 .. $#{ $attributes{$attr} }] . " " if defined( @{ $attributes{$attr} }[1]); #prüfen ob noch etwas zum Augeben außer dem Bezeichner vorhanden ist und ggf. Ausgabe } __DATA__ Attribut1 50 :xyz,xy Attribut2 Zeit :nv Attribut3 17:00:00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
my @lines = ('Attribut1 50 :xyz,xy', 'Attribut2 Zeit :nv', 'Attribut3 17:00:00 :nv,oder'); my @data = (); my $CMD = "attr"; my $DEV = "Rollladensteuerung"; for my $line_str (@lines) { my @cols = split(/ /, $line_str); push @data, { Attr => $cols[0], Value => $cols[1], Selection => $cols[2] }; } for my $data_line (@data) { say "$CMD $DEV $data_line->{Attr} $data_line->{Value}"; }
print "@array";
name vorname plz ort
@fields = qw(name vorname plz ort);
1 2
%hunt = (); @hunt{@fields} = split /\s+/, $_; # splitte eine Zeile an Leerzeichen