SPUG: Slice of an arrary within a hash?

Joel largest at largest.org
Fri May 5 13:46:25 CDT 2000


Replying to myself here...

I now see you were talking about slices.  If this is what you want, you
could do one of the following 2 ways: 


#!/usr/bin/perl

# You should always use strict
use strict;

my %DATA;
my $dsku   = 'fred';
my @prices = ('11.11','22.22','33.33','44.44');


# EITHER THIS
$DATA{$dsku}[0]         = '00.00';
@{ $DATA{$dsku} }[1..4] = @prices;
$DATA{$dsku}[5]         = '55.55';

# OR THIS
@{ $DATA{$dsku} }[0..5] = ('00.00', @prices, '55.55');


#I also moved my $count++ so that it reflects 0-5, not 1-6
my $count = 0;

for my $element ( @{ $DATA{$dsku} } ) {
    print "\$DATA{\$sku}[$count] = '$element'\n";
    $count++;
}

__END__

HTH

Joel



On Fri, 5 May 2000, Joel wrote:

> I'm not completely clear on what you're trying to do, but it looks like
> something like this would work for you:
> 
> 
> #!/usr/bin/perl
> 
> # You should always use strict :-)
> use strict;
> 
> my %DATA;
> my $dsku   = 'fred';
> my @prices = ('11.11','22.22','33.33','44.44');
> 
> @{ $DATA{$dsku} } = ('00.00', @prices, '55.55');
> 
> my $count;
> for my $element ( @{ $DATA{$dsku} } ) {
>     $count++;
>     print "\$DATA{\$sku}[$count] = '$element'\n";
> }
> 
> __END__
> 
> Joel
> 
> 
> 
> > I'd appreciate a little help understanding the behavior of the
> > following script.
> > 
> > I've included 3 versions of the same script which are identical except
> > for the subset of lines which have been commented out.
> > 
> > The first example is producing the results I want but I was trying to
> > streamline the logic.
> >
> > - - - - - - - - - - - - - - - Version 1
> > 
> > #!/usr/bin/perl
> > %DATA;
> > $dsku = 'fred';
> > @prices = ('11.11','22.22','33.33','44.44');
> > $DATA{$dsku}[0] = '00.00';
> > #$DATA{$dsku}[1 .. 4] = @prices[0 .. 3];
> > #$DATA{$dsku}[1,2,3,4] = @prices[0,1,2,3];
> > $DATA{$dsku}[1] = @prices[0];
> > $DATA{$dsku}[2] = @prices[1];
> > $DATA{$dsku}[3] = @prices[2];
> > $DATA{$dsku}[4] = @prices[3];
> > $DATA{$dsku}[5] = '55.55';
> > 
> > for ( my $i = 0; $i < 6; $i++ )
> > {
> > print "\$DATA{\$sku}[$i] = '$DATA{$dsku}[$i]'\n";
> > }
> > ====>
> > $DATA{$sku}[0] = '00.00'
> > $DATA{$sku}[1] = '11.11'
> > $DATA{$sku}[2] = '22.22'
> > $DATA{$sku}[3] = '33.33'
> > $DATA{$sku}[4] = '44.44'
> > $DATA{$sku}[5] = '55.55'
> > 
> > - - - - - - - - - - - - - - - Version 2
> > 
> > #!/usr/bin/perl
> > %DATA;
> > $dsku = 'fred';
> > @prices = ('11.11','22.22','33.33','44.44');
> > $DATA{$dsku}[0] = '00.00';
> > $DATA{$dsku}[1 .. 4] = @prices[0 .. 3];
> > #$DATA{$dsku}[1,2,3,4] = @prices[0,1,2,3];
> > #$DATA{$dsku}[1] = @prices[0];
> > #$DATA{$dsku}[2] = @prices[1];
> > #$DATA{$dsku}[3] = @prices[2];
> > #$DATA{$dsku}[4] = @prices[3];
> > $DATA{$dsku}[5] = '55.55';
> > 
> > for ( my $i = 0; $i < 6; $i++ )
> > {
> > print "\$DATA{\$sku}[$i] = '$DATA{$dsku}[$i]'\n";
> > }
> > ====>
> > $DATA{$sku}[0] = '44.44'
> > $DATA{$sku}[1] = ''
> > $DATA{$sku}[2] = ''
> > $DATA{$sku}[3] = ''
> > $DATA{$sku}[4] = ''
> > $DATA{$sku}[5] = '55.55'
> > 
> > - - - - - - - - - - - - - - - Version 3
> > 
> > #!/usr/bin/perl
> > %DATA;
> > $dsku = 'fred';
> > @prices = ('11.11','22.22','33.33','44.44');
> > $DATA{$dsku}[0] = '00.00';
> > #$DATA{$dsku}[1 .. 4] = @prices[0 .. 3];
> > $DATA{$dsku}[1,2,3,4] = @prices[0,1,2,3];
> > #$DATA{$dsku}[1] = @prices[0];
> > #$DATA{$dsku}[2] = @prices[1];
> > #$DATA{$dsku}[3] = @prices[2];
> > #$DATA{$dsku}[4] = @prices[3];
> > $DATA{$dsku}[5] = '55.55';
> > 
> > for ( my $i = 0; $i < 6; $i++ )
> > {
> > print "\$DATA{\$sku}[$i] = '$DATA{$dsku}[$i]'\n";
> > }
> > ====>
> > $DATA{$sku}[0] = '00.00'
> > $DATA{$sku}[1] = ''
> > $DATA{$sku}[2] = ''
> > $DATA{$sku}[3] = ''
> > $DATA{$sku}[4] = '44.44'
> > $DATA{$sku}[5] = '55.55'
> 
> 

---------------------------------------------------
Procedure Computers_Move(var CPU_Turn :boolean);
var a:integer;
begin
  writeln('Computer decides to skip this round. ');
  CPU_Turn := False;
end;


 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace "action" below by subscribe or unsubscribe
           Email to majordomo at pm.org: "action" spug-list your_address





More information about the spug-list mailing list