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
#!/usr/bin/perl use strict; use warnings; my $string = 'belp;2015-06-25 10:40:01;uptime 20037241.55'; if ($string =~ /.+uptime (\d+\.?\d*)$/) { my $uptime = $1; if ($uptime < 7200) { print "Weniger als 2h!"; } else { print "Gleich oder mehr als 2h!"; } } else { print "Problem: Kann uptime nicht aus string extrahieren!"; }
2015-06-25T09:43:07 payxPS: An der regex kann oder muss man vielleicht noch feilen, je nach dem, was für tatsächliche Auftretensfälle von string es gibt.
2015-06-25T09:33:26 Shaq17Wie kann ich also aus dem oben angegeben String NUR die Uptime die in Sekunden dargestellt wird, also die 20037241.55, mir rausschneiden, damit ich mit dieser dann die If Abfrage machen kann?
1 2 3 4 5 6 7 8
#!/usr/bin/perl use strict; use warnings; my $string = 'belp;2015-06-25 10:40:01;uptime 20037241.55'; my @a = split(";", $string); my @b = split(" ", $a[2]); my $uptime = $b[1]; print "$uptime\n";
2015-06-25T21:53:08 hlubenowDann solltest du aber daran denken, dass das Pattern in split() ebenfalls eine Regex ist, auch wenn nur Anführungszeichen darum stehen. (Und das einzelne Leerzeichen als Pattern hat noch eine besondere Bedeutung.)Ich benutze RegEx nicht so gern, deshalb würd' ich's so machen: [...]