package test_undef; use Moose; use MooseX::UndefTolerant; has 'language' => ( is => 'rw', isa => 'Str', default => 'Perl', lazy => 1, ); no Moose; __PACKAGE__->meta->make_immutable; #### #!/usr/bin/env perl use strict; use warnings; use feature 'say'; use test_undef; use Getopt::Long; my $language; GetOptions( "language=s" => \$language, ); my $test = test_undef->new( 'language' => $language, ); say $test->language;