Your example used ->dummy() which is a call to the original ->slice() method for the length of the dummy dim. Niceslice syntax would be something like $vpix3(,,,,*128)->info but you'll note the explicit list of dimension commas.
I don't see an easy way to get the last dimension of a given size without some mv() or such. Usually if the last dimension is of size 1 it gets autopromoted to whatever length is needed for a threaded operation. Cheers, Chris On Tue, Jan 24, 2012 at 12:52 PM, Ingo Schmid <[email protected]> wrote: > On 01/24/2012 06:37 PM, Chris Marshall wrote: >> >> For what it is worth, the slice() syntax for a dummy dimension >> of size a is '*a' and not '* a' or anything else. That said, it could >> be made more permissive without breaking anything. The >> niceslice syntax does work with this construct... > > I was using Niceslice but I guess you mean something else. > >> Cheers, >> Chris >> >> On Tue, Jan 24, 2012 at 12:11 PM, Ingo Schmid<[email protected]> wrote: >>> >>> Hi, >>> a minor bug but annoying to debug ... took me about an hour to find >>> what's >>> wrong ... >>> >>> PDL (latest build) produced the following error : >>> >>> print $cab2->dummy(-1,$$p{ky})->info; >>> >>> $cabc2->info: PDL: Double D [128,6,1,2,8] >>> >>> $$p{ky} is ' 128 ' - single quotes are only to show the padding white >>> space. >>> >>> >>> Invalid slice str ',,,,,* 128 ': ' 128 ' at Basic/Core/Core.pm.PL (i.e. >>> PDL::Core.pm) line 396 >>> PDL::Core::barf('Invalid slice str \',,,,,* 128 \': \' 128 \'') >>> called >>> at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 1592 >>> PDL::dummy('PDL=SCALAR(0x1df98c0)', -1, ' 128 ') called at >>> /home/ingo/perl/reco_utils.pm line 84 >>> reco_utils::epi('PDL=SCALAR(0x1df9998)', 'PDL=SCALAR(0x1df98a8)', >>> 'PDL=SCALAR(0x1df9d28)', 'HASH(0x1dc9830)') called at >>> /home/ingo/perl/reco_utils.pm line 364 >>> reco_utils::fou('PDL=SCALAR(0x1df9bf0)', 'HASH(0x1dc9830)', >>> 'PDL=SCALAR(0x1df9f38)') called at /home/ingo/perl/offline-reco.pl line >>> 263 >>> at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 396 >>> PDL::Core::barf('Invalid slice str \',,,,,* 128 \': \' 128 \'') >>> called >>> at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 1592 >>> PDL::dummy('PDL=SCALAR(0x1df98c0)', -1, ' 128 ') called at >>> /home/ingo/perl/reco_utils.pm line 84 >>> reco_utils::epi('PDL=SCALAR(0x1df9998)', 'PDL=SCALAR(0x1df98a8)', >>> 'PDL=SCALAR(0x1df9d28)', 'HASH(0x1dc9830)') called at >>> /home/ingo/perl/reco_utils.pm line 364 >>> reco_utils::fou('PDL=SCALAR(0x1df9bf0)', 'HASH(0x1dc9830)', >>> 'PDL=SCALAR(0x1df9f38)') called at /home/ingo/perl/offline-reco.pl line >>> 263 >>> Died at /home/ingo/perl/offline-reco.pl line 351. >>> >>> The following works: >>> >>> print $cab2->dummy(-1,($$p{ky})*1.)->info; >>> >>> >>> >>> >>> _______________________________________________ >>> Perldl mailing list >>> [email protected] >>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl >>> > _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
