# @data enthält alle im Regex gefangenen Muster, das sind Hostname, IP, Status my @data = ( $output =~ /report for (.+?) \((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)\nHost is (\w+)/gm ); # solange noch Daten im Array sind while (scalar @data) { # hole den Hostname aus dem Array und zerlege in die verschiedenen Teile my @parts = split /\./,shift @data; # Domain ist hier XXXXX.TLD, aus letzten beiden Teilen erzeugen my $domain = "$parts[-2].$parts[-1]"; # die letzten beiden abgetrennten Infos wegwerfen pop @parts; pop @parts; # Hostname aus dem Rest erzeugen my $host = join '.',@parts; say "Host: ", $host; say "Domain: ", $domain; # IP aus Datenarray holen say "IP: ", shift @data; # Status aus Datenarray holen say "Status: ",shift @data; say '-' x 10; }