#!/usr/bin/perl use strict; use warnings; use constant GEOMETRY_WIDTH  => 0; use constant GEOMETRY_HEIGHT => 1; use constant GEOMETRY_X      => 2; use constant GEOMETRY_Y      => 3; my $geom = "800x600-750-1010"; print "'$geom' liefert '", join(", ", parse_geometry_string2($geom)), "'.\n"; sub parse_geometry_string {   my $geometry = shift;   my @extends = (0, 0, 0, 0);   if ($geometry =~ /([-+]?\d+)x([-+]?\d+)/) {       $extends[GEOMETRY_WIDTH] = $1;       $extends[GEOMETRY_HEIGHT] = $2;   }   if ($geometry =~ /[-+]([-+]?\d+)[-+]([-+]?\d+)/) {       $extends[GEOMETRY_X] = $1;       $extends[GEOMETRY_Y] = $2;   }   @extends; } sub parse_geometry_string2 {   my $geometry = shift;   my @extends = (0, 0, 0, 0);   if ($geometry =~ /([-+]?\d+)x([-+]?\d+)/) {       $extends[GEOMETRY_WIDTH] = $1;       $extends[GEOMETRY_HEIGHT] = $2;   }   if ($geometry =~ /([-+]\d+)([-+]\d+)/) {       $extends[GEOMETRY_X] = $1;       $extends[GEOMETRY_Y] = $2;   }   @extends; }