Loading ...
Sorry, an error occurred while loading the content.

Re: [PBML] random subscripts

Expand Messages
  • Donald Korrecta
    ... in the actual script the variables are called suit and rank . Some of your response,though, is a little past where I am. I do thank you for your lesson
    Message 1 of 7 , Mar 20, 2008
    • 0 Attachment
      --- Jenda Krynicky <Jenda@...> wrote:

      > From: Donald Korrecta <draktrax@...>
      > > The entire prog:
      > > foreach $b ("spades", "hearts", "clubs",
      > "diamonds") {
      > > foreach $a ("ace", 2..10, "jack", "queen",
      > "king") {
      > > $c=0;
      > > $deck[&c]= "$a of $b";
      >
      > I believe you meant
      > $deck[$c]= "$a of $b";
      >
      > your code would attempt to call the c() subroutine
      > and thus should
      > return an error that there is no such function.
      >
      > > $c++;
      > > }
      > > }
      > > foreach $i (1..10) }
      > > $card=$deck[rand @deck];
      > > print "Card $i is the $card;
      > > }
      > >
      > > if i print out the result of the nested loops
      > > i get a list of all cards. the prog returns only
      > the
      > > king of diamonds. what am i missing?
      >
      > The first thing you are missing is
      >
      > use strict;
      > use warnings;
      > # and possibly
      > # no warnings 'uninitialized'; # I find this
      > particular warning
      > annoying.
      >
      > then you are missing the variable declarations.
      >
      > foreach my $b ("spades", "hearts", "clubs",
      > "diamonds") {
      > foreach my $a ("ace", 2..10, "jack", "queen",
      > "king") {
      > my $c=0;
      > $deck[$c]= "$a of $b";
      > $c++;
      > }
      > }
      > foreach my $i (1..10) }
      > my $card=$deck[rand @deck];
      > print "Card $i is the $card\n";
      > }
      >
      > this might help you to see the problem, you reset
      > the $c counter in
      > each iteration of the inner foreach loop, thus you
      > only ever set
      > $deck[0]. Which you could easiy find out by printing
      > the @deck to
      > make sure it's initialized correctly:
      >
      > use Data::Dumper;
      > print Dumper(\@deck);
      >
      >
      > Next thing, you should not use variables $a and $b
      > outside sort{}.
      > They are a bit special. Besides $a and $b is not
      > very informative, is
      > it? What does "a" mean? Nothing! Use meaningful
      > variable names!
      >
      > Also, if you want to add a value at the end of an
      > array you do not
      > need to keep a counter, just push() the value into
      > the @array:
      >
      >
      > use strict;
      > use warnings;
      > no warnings 'uninitialized';
      >
      > my @deck;
      > foreach my $color ("spades", "hearts", "clubs",
      > "diamonds") {
      > foreach my $value ("ace", 2..10, "jack", "queen",
      > "king") {
      > push @deck, "$value of $color";
      > }
      > }
      > # use Data::Dumper;
      > # print Dumper(\@deck);
      >
      > foreach my $i (1..10) }
      > my $card=$deck[rand @deck];
      > print "Card $i is the $card\n";
      > }
      >
      >
      > HTH, Jenda
      > ===== Jenda@... === http://Jenda.Krynicky.cz
      > =====
      > When it comes to wine, women and song, wizards are
      > allowed
      > to get drunk and croon as much as they like.
      > -- Terry Pratchett in Sourcery
      >
      >

      in the actual script the variables are called "suit"
      and "rank". Some of your response,though, is a little
      past where I am. I do thank you for your lesson and
      will keep your correspondence for future reference.
      a most grateful newbie,
      draktrax


      ____________________________________________________________________________________
      Be a better friend, newshound, and
      know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
    Your message has been successfully submitted and would be delivered to recipients shortly.