Matthew Booth wrote:
diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm ... @@ -1551,10 +1552,19 @@ sub _check_for_kernels ... # Check the kernel was recognised if(defined($kernel)) { + # Put this kernel on the top level kernel list + my $kernels = $os->{kernels}; + if(!defined($kernels)) { + $kernels = []; + $os->{kernels} = $kernels; + } + push(@$kernels, $kernel); +
Hi Matt, It took me too long to see what was being done above, so I rewrote it in a way that I found easier to read: How about this? diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index dfa79af..2acdec6 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -1558,12 +1558,8 @@ sub _check_for_kernels # Check the kernel was recognised if(defined($kernel)) { # Put this kernel on the top level kernel list - my $kernels = $os->{kernels}; - if(!defined($kernels)) { - $kernels = []; - $os->{kernels} = $kernels; - } - push(@$kernels, $kernel); + $os->{kernels} ||= []; + push(@{$os->{kernels}}, $kernel); $config{kernel} = $kernel; The ||= operator may look odd, but it's another of these idiom things. Once you see it a few times, then "get it", and start using it, you'll never go back. Which would you prefer to read/maintain? This: # Ensure the array-ref is initialized. if (!defined $some_long_name->[$some_complicated_expression]) { $some_long_name->[$some_complicated_expression] = []; } # Append to it. ... or this: # Ensure the array-ref is initialized. $some_long_name->[$some_complicated_expression] ||= []; # Append to it. ...