I created a card shuffling program and it works fine. However, for my project I 
am to place the shuffling part of my code in a separate script as a subroutine. 

I am to remove the code
that does the shuffling and include it as another function in
obj13-lib.pl. So I did this and  after the first "hand" is dealt, call the
shuffling function again before dealing another, different hand.



 
I call it obj-lib.pl and my main script obj13.pl. 

I did put it together but my obj13.pl script is not shuffling my cards and I 
need to print out two sets of five elements. And I was not able to get it to 
print out 2 sets of five elements.

Where am I going wrong? Looking for some help and a point in the right 
direction. Thanks everyone.

Below is my code:
obj13.pl

#!/usr/bin/perl

require 'obj13-lib.pl';

my @startingdeck = ("A H","2 H","3 H","4 H","5 H","6 H","7 H","8 H",
                  "9 H","10 H","J H","Q H","K H",
                  "A D","2 D","3 D","4 D","5 D","6 D","7 D","8 D",
                  "9 D","10 D","J D","Q D","K D",
                  "A C","2 C","3 C","4 C","5 C","6 C","7 C","8 C",
                  "9 C","10 C","J C","Q C","K C",
                  "A S","2 S","3 S","4 S","5 S","6 S","7 S","8 S",
                  "9 S","10 S","J S","Q S","K S");


print "the top five cards are @startingdeck[0..4]\n";

#_END_ _________________________________________________________________________
My second library script code here is called on to complete my shuffle program:

obj13-lib.pl

#!/usr/bin/perl

sub shuffle(){

my @right;
my @left;
SHUFFLE:
    unshift @left, pop @startingdeck for 1..26;
@right = @startingdeck;
@startingdeck = ();
while(@left or @right){
    if (rand() < 0.5){
         @left and push @startingdeck, shift @left
   }else{
         @right and push @startingdeck, shift @right
   }
};

rand() < 0.9 and goto SHUFFLE;
}

1;

#_END_





      

Reply via email to