#!/usr/bin/perl -w use strict; use YAPE::Regex::Explain; my $line = ' directory '; if ( $line =~ /<(\w(?:[^ \/>]+))(?:(?:(?:\s+)([^=>]+)\s*=\s*("|')([^\3]*)\3))\s*\/>/) { print "1=" . $1. "\n2=" . $2 . "\n3=" . $3 . "\n4=" . $4 . "\n5=" . $5 . "\n"; } my $REx = q{$line =~ /<(\w(?:[^ \/>]+))(?:(?:(?:\s+)([^=>]+)\s*=\s*("|')([^\3]*)\3))\s*\/>/}; my $exp = YAPE::Regex::Explain->new($REx)->explain; print $exp;