#!/usr/bin/env perl -l use strict; use warnings; my @tests = qw{ one one.two one.two.three four.five.six.seven one. one-two .one .one. . .. .@. one.good.egg one.-bad-.egg }; print "'$_': ", grep(! /^\w+$/, split /\./, $_, -1) ? 'bad' : 'good' for @tests; #### 'one': good 'one.two': good 'one.two.three': good 'four.five.six.seven': good 'one.': bad 'one-two': bad '.one': bad '.one.': bad '.': bad '..': bad '.@.': bad 'one.good.egg': good 'one.-bad-.egg': bad