SPUG: Slice of an arrary within a hash?

Rob Garrett robg at techie.com
Fri May 5 13:04:31 CDT 2000


Good morning -

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.

Thanks for your help.

Rob

- - - - - - - - - - - - - - - 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'

______________________________________________
FREE Personalized Email at Mail.com
Sign up at http://www.mail.com/?sr=signup


 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     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