http://qs321.pair.com?node_id=1105754

dissident has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I got stuck with a "Can't use an undefined value as an ARRAY reference at ..." error when trying to push a struct using MooX::Struct onto an array. Please apologize I am still a novice monk and I don't understand why this error happens. I probably did some smaller or larger mistake, but have no clue what could be wrong. :(

Here a stripped-down piece of code. It fails at the line with the push.

use strict; use warnings; use diagnostics; use 5.014; # so push/pop/etc work on scalars (experimental) use MooX::Struct -rw, Dirnode => [ qw( $dirname @subdlist ) ]; my $dirroot = crawldir( "."); sub crawldir { my $curpath = shift; my $dno = Dirnode[]; $dno->dirname( $curpath ); opendir(DIR, $curpath); my @files = readdir(DIR); closedir(DIR); print "crawldir in directory ", $dno->dirname, "\n"; foreach (@files) { next if $_ eq '.' or $_ eq '..'; my $file_path = "$curpath/$_"; $file_path =~ s|/+|/|g; if (-d $file_path) { print "crawldir in directory ", $dno->dirname, ": calling c +rawldir( $curpath\/$_)\n"; push @{$dno->subdlist}, crawldir( "$curpath\/$_" ); } } return $dno; }