#!/usr/bin/perl use strict; use warnings; my @file = ('Negation :;', 'Object_Ground:;Object ', 'Object_Plant :Color Position;Object', ' Test 1 : Blubb Bla;;;;;Test;;;;::', ); for my $zeile (@file) { chomp $zeile; print "Zeile '$zeile'\n"; my ($vorn, $mitte, $hinten) = $zeile =~ m~^([^:]*):([^;]*);(.*)$~; for ($vorn, $mitte, $hinten) { $_ = '' unless defined; } s~^\s+|\s+$~~g for ($vorn, $mitte, $hinten); print "\tvorn : '$vorn'\n\tmitte : '$mitte'\n\thinten: '$hinten'\n"; if (length($vorn) and length($mitte) and length($hinten)) { print "\tFall3: relframe und Ueberklasse\n"; if ($mitte =~ m~\s~) { print "\tMitte enthaelt mehrere Werte. (Fall 4)\n"; my @mwerte = split /\s+/, $mitte; print "\tDiese Werte sind: '", (join "', '", @mwerte), "'\n"; } } elsif (length($vorn) and length($mitte)) { print "\tFall1: relframe aber keine Ueberklasse\n"; } elsif (length($vorn) and length($hinten)) { print "\tFall2: keine relframe aber Ueberklasse\n"; } elsif (length($vorn)) { print "\t<\\frame_entry>\n"; } else { print "\tFEHLER\n"; } }