Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Get element count of CONSTANT list (aref))

by haukex (Abbot)
on Mar 12, 2018 at 21:37 UTC ( #1210768=note: print w/replies, xml ) Need Help??


in reply to [SOLVED] Get element count of CONSTANT list (aref))

constants are basically just sub FOO () { ... } (Constant Functions). So I first tried your @{ STEPPER_SEQUENCE }, but Perl reminded me: Ambiguous use of @{STEPPER_SEQUENCE} resolved to @STEPPER_SEQUENCE and Global symbol "@STEPPER_SEQUENCE" requires explicit package name. However, once you disambiguate:

use constant STEPPER_SEQUENCE => [ [qw(1 0 0 1)], [qw(1 0 0 0)], [qw(1 1 0 0)], [qw(0 1 0 0)], [qw(0 1 1 0)], [qw(0 0 1 0)], [qw(0 0 1 1)], [qw(0 0 0 1)], ]; print 0+@{STEPPER_SEQUENCE()}, "\n"; print 0+@{+STEPPER_SEQUENCE}, "\n"; print 0+@{&STEPPER_SEQUENCE}, "\n"; __END__ 8 8 8

Update: The thread constant vector might be relevant here too. Also added the third example, although note that calls to constant functions with & are not subject to inlining.

Replies are listed 'Best First'.
Re^2: Get element count of CONSTANT list (aref))
by stevieb (Abbot) on Mar 12, 2018 at 21:52 UTC

    Don't know how I didn't follow that path, probably just because I was focused for so long on it.

    use warnings; use strict; use feature 'say'; use constant STEPPER_SEQUENCE => [ [qw(1 0 0 1)], [qw(1 0 0 0)], [qw(1 1 0 0)], [qw(0 1 0 0)], [qw(0 1 1 0)], [qw(0 0 1 0)], [qw(0 0 1 1)], [qw(0 0 0 1)], ]; use constant STEP_COUNT => 0+@{ STEPPER_SEQUENCE() }; say STEP_COUNT;

    Output:

    8

    Works perfectly! Thanks once again haukex!

    -stevieb

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1210768]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2018-04-20 22:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?