#! /usr/bin/perl use strict; use warnings; # Jeder logische Teil (Tag, Stunde, Minute) ist optional; # daher mit nicht-einfangender Klammer gruppiert und mit # Modifier ? versehen my $regex = qr{ (?: # Gruppierung, weil optional (\d+)\s+Tage # Anzahl Tage einfangen; 1. Rueckgabewert )? \s* (?: # Gruppierung, weil optional (\d+)\s+Std\. # Anzahl Stunden einfangen; 2. Rueckgabewert )? \s* (?: # Gruppierung, weil optional (\d+)\s+Min. # Anzahl Minuten einfangen; 3. Rueckgabewert )? }x; while ( my $line = ) { my ( $d, $h, $m ) = $line =~ m{$regex}; for ( $d, $h, $m ) { $_ = 0 if !defined $_; } print "$d D, $h h, $m m\n"; } __DATA__ 3 Tage 12 Std. 3 Min. 2 Std. 4 Min. 2 Min. ~