$ ./sample.pl my-dev-1 --- classes: - all - dev #### #!/usr/bin/perl use strict; use warnings; use YAML qw( Dump ); use Getopt::Std; use constant { true => 1, false => 0 }; use Data::Dumper; my $deploy = 'common'; my $host = 'unknown'; my $fullhost = 'none'; my @classes = (); my %args = (); getopts( 'hr:', \%args ); sub usage { my $heredoc = < \@classes, } ); #### #!/usr/bin/perl use warnings; use strict; use Test::More tests => 2; use Test::Output; require_ok( "./sample.pl"); is(&usage(), " Usage: sample.pl [-h] hostname [ -h ] print this help message ", 'check usage message'); done_testing(); #### $ ./test.pl 1..2 no args --- classes: - base ok 1 - require './sample.pl'; Usage: sample.pl [-h] hostname [ -h ] print this help message ok 2 - check usage message