|< 1 2 >| | 12 Einträge, 2 Seiten |
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl
use strict;
use warnings 'all';
use Data::Dumper;
# abfrage datei einlesen
my $data = &datei_lesen('abfrage.txt');
# schwellwerte datei einlesen
my $werte = &datei_lesen('schwellwerte.txt');
# daten vergleichen und anpassen
foreach my$key (keys %{$data})
{
# roter bereich
if ($data->{$key} > $werte->{$key}->[1])
{ $data->{$key} = 'rot' }
# gelber bereich
elsif ($data->{$key} > $werte->{$key}->[0])
{ $data->{$key} = 'gelb' }
# gruener bereich
else
{ $data->{$key} = 'gruen' }
}
# Ergebnisse Anzeigen
print Dumper($data);
# NAME: datei_lesen()
# USE: Datei anhand des musters in einen Hash einlesen.
# PARAMETERS: Filename
# RETURNS: Hash reference
sub datei_lesen($)
{
# pick parameters
my($file) = @_;
# open file
open(my$fhIN, '<', $file)
or die "open failed: $!";
# read data
my %data;
while (my$line=<$fhIN>)
{
chomp($line);
# split line
my @tracts = split(';', $line);
# key results from product and status
my $key = join(';', splice(@tracts, 0, 2));
# maybe we have multiple values
if ( @tracts > 1 )
{ $data{$key} = [@tracts] }
else
{ $data{$key} = $tracts[0] }
}
# close file
close($fhIN);
# return data reference
return \%data;
} # datei_lesen
__END__
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
43
44
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my %set;
my @limits = (
"Schrauben;Error;200;500",
"Schrauben;Process;25;50",
"Schrauben;Waiting;100;150",
"Muttern;Error;10;30",
"Muffen;Waiting;400;800",
"Muffen;Process;5;10",
);
while (my $row = pop @limits) {
my @cols = split /;/, $row;
$set{$cols[0]}->{$cols[1]}->{'min'} = $cols[2];
$set{$cols[0]}->{$cols[1]}->{'max'} = $cols[3];
}
warn Dumper \%set;
while (<DATA>) {
chomp;
my @row = split;
$row[3] = 'green' if $row[2] < $set{$row[0]}->{$row[1]}->{'min'};
$row[3] = 'yellow' if $row[2] >= $set{$row[0]}->{$row[1]}->{'min'}
and $row[2] < $set{$row[0]}->{$row[1]}->{'max'};
$row[3] = 'red' if $row[2] > $set{$row[0]}->{$row[1]}->{'max'};
print join ' ', @row;
print "\n";
}
__DATA__
Schrauben Error 234
Schrauben Process 12
Schrauben Waiting 151
Muttern Error 45
Muffen Waiting 156
Muffen Process 23
Quotemy %set;
my @limits = (
"Schrauben;Error;200;500",
"Schrauben;Process;25;50",
"Schrauben;Waiting;100;150",
"Muttern;Error;10;30",
"Muffen;Waiting;400;800",
"Muffen;Process;5;10",
);
while (my $row = pop @limits) {
### Mit pop wird das lezte Element/Zeile am Ende des Arrays weggenommen und $row zugewiesen
### Muffen;Process;5;10
my @cols = split /;/, $row;
### Der Feldtrenner ; wird durch split entfernt und dem Array "@cols jeweis die 4 Wert der Zeile zugewiesen
### $cols[0], $cols[1], $cols[2], $cols[3]
### Muffen Process 5 10
$set{$cols[0]}->{$cols[1]}->{'min'} = $cols[2];
$set{$cols[0]}->{$cols[1]}->{'max'} = $cols[3];
}
1
2
3
4
while (my $row = pop @limits) {
my ($type, $status, $min, $max) = split /;/, $row;
@{$set{$type}{$status}}{qw/min max/} = ($min, $max);
}
|< 1 2 >| | 12 Einträge, 2 Seiten |