#! perl -sw use strict; for (qw/$foo @foo %foo &foo *foo foo/) { my($sigil, $name) = ('&'.$_) =~ m/^(?:&?([\$\@%&<*]|&))(.*?)>?$/; print "$sigil:$name\n"; } __END__ c:\test>temp $:foo @:foo %:foo &:foo <:foo *:foo &:foo c:\test>