in reply to Re: two dice question
in thread two dice question

By the way, you can skip the intermediate vars entirely:
Better (IMO):
my @dicearray = ( <<die1, <<die2, <<die3, <<die4, <<die5, <<die6 ); ############## # # # # # # # # # # # ############## die1 ############## # # # # # # # # # # # # ############## die2 ...

Replies are listed 'Best First'.
Re^3: two dice question
by Fletch (Bishop) on Jul 17, 2007 at 17:05 UTC

    Or (with modular help) skip the multiple heredocs:

    my $dice = YAML::Syck::Load( <<'EOT' ); --- - |- --------- | | | # | | | --------- - |- --------- | # | | | | # | --------- - |- --------- | # | | # | | # | --------- - |- --------- | # # | | | | # # | --------- - |- --------- | # # | | # | | # # | --------- - |- --------- | # # | | # # | | # # | --------- EOT print $dice->[int(rand(@{$dice}))], "\n";

    (Using Anonymonk's better looking (IMHO) dice from below)

      No need to learn and load a complex module for that!
      my @dice = split /^--\n/m, <<'EOT'; --------- | | | # | | | --------- -- --------- | # | | | | # | --------- -- ... -- --------- | # # | | # # | | # # | --------- EOT

        Ah, but then your dice have leading spaces in front of them. :)

        my @dice = map { (my $t = $_) =~ s/^\s+(?=\S)//gm; $t } split( /^--\n/ +m, <<'EOT' ); ... EOT
Re^3: two dice question
by TGI (Parson) on Jul 17, 2007 at 17:19 UTC

    I really like that syntax, I didn't know you could do that, but it looks good and reads well!

    I'd stick a 'no value yet' die into the first position in the array. For these graphic representations, it is often useful to have an image to represent "unknown". And, in this case, placing the unknown at index 0 aligns the die value with the index for the appropriate image.

    In fact, if an array is not fully populated, but there is a "natural" numerical index, I will often align the elements in the array based on the natural index. If the array becomes 'sparse enough', then I use a hash instead. What constitutes sparse enough depends on a number of issues, like comparative memory usage, etc.

    my @dicearray = ( <<unknown_die, <<die1, <<die2, <<die3, <<die4, <<die +5, <<die6 ); ############## # # # ? ? ? ? ? # # # # ? ? ? ? ? # # # ############## unknown_die ############## # # # # # # # # # # # ############## die1 ############## # # # # # # # # # # # # ############## die2 ... print $dicearray[$die_value]; # no pesky manipulation of the index he +re!


    TGI says moo