On 4/2/25 8:22 AM, Bruce Gray wrote:
my $CommandLine = CommandLineClass.new{
help => False,
debug => False,
UNC_BackupPath => Q[\\192.168.240.10\MyDocsBackup\backup1],
rotates => 2,
ParentDir => "/"
};
The problem is with the syntax of the `new`.
You need parenthesis instead of curly braces.
With that change, your code works as expected.
And I have it right on every other .new in my code.
Even my keeper how to has it right. Mumble, Mumble.
Question: should the compiler have caught this? Or
is there some other purpose for the .new{} syntax?
For even DRYer code, you can flatten `%opts` directly into the `new`
constructor, like so:
# use lib 'C:/NtUtil', 'C:/NtUtil/p6lib'; # use this one on
customer machines
use Getopt::Long;
class CommandLineClass is rw {
has Bool $.help = False;
has Bool $.debug = False;
has Str $.UNC_BackupPath = Q[\
\192.168.240.10\MyDocsBackup\backup1];
has Int $.rotates = 2;
has $.ParentDir = '/';
}
my %opts = get-options( 'help', 'debug', 'UNC_BackupPath=s',
'rotates=i', 'ParentDir=s' ).hash;
my CommandLineClass $CommandLine .= new( |%opts );
say $CommandLine.raku if $CommandLine.debug;
Sweet!
--
Hope this helps,
Bruce Gray (Util of PerlMonks)
Very much so! Thank you!