When using the range operator, is the list actually created with all the
elements?
For example, if I create a list like (123..456754), does it take up the
same amount of memory as if I actually entered all those in between
numbers?
I'm asking because I want to use ranges in a switch statement and they
are large ranges like the above. I don't think I can use >= in the case
section of the switch can I?
I think the code below will cause memory problems. Is there a better way
using switch? Or am relegated to using if statements with ">="?
my $flag_value = $field_array[9];
while ($flag_value < 0) {
switch ($flag_value) {
case 1 { $block{"WeightItem"} = "Y";
$flag_value -= 1 }
case [2, 3] { $block{"EnterPriceUsed"} = "Y";
$flag_value -= 2 }
case [4..7] { $block{"PriceRequired"} = "Y";
$flag_value -= 4 }
case [8..15] { $block{"LogItemExcpt"} = "Y";
$flag_value -= 8 }
case [16..31] { $block{"CodeFromAlias"} = "Y";
$flag_value -= 16 }
case [32..255] { $block{"NoMovement"} = "Y";
$flag_value -= 32 }
case [256..511] { $block{"EmpDiscount"} = "Y";
$flag_value -= 256 }
case [512..1023] { $block{"KeyedPrice"} = "Y";
$flag_value -= 512 }
case [1024..2047] { $block{"NonDiscntable"} = "Y";
$flag_value -= 1024 }
case [2048..4095] { $block{"WghtQtyEnt"} = "Y";
$flag_value -= 2048 }
case [4096..8191] { $block{"VoidItem"} = "Y";
$flag_value -= 4096 }
case [8192..16383] { $block{"RefndEntered"} = "Y";
$flag_value -= 8192 }
case [16384..32767] { $block{"LogExcptCond"} = "Y";
$flag_value -= 16384 }
case [32768..65535] { $block{"PrhibMultCoup"} = "Y";
$flag_value -= 32768 }
case [65536..131071] { $block{"AmtTypeAutoMarkdown"} =
"Y"; $flag_value -= 65536 }
case [131072..262143] { $block{"VoidAllItem"} = "Y";
$flag_value -= 131072 }
case [262144..524287] { $block{"ErrCorrectVoidItem"} =
"Y"; $flag_value -= 262144 }
case [524288..33554431] { $block{"Nsc2PricedItems"} =
"Y"; $flag_value -= 524288 }
case [33554432..67108863] { $block{"ItemOnSale"} = "Y";
$flag_value -= 33554432 }
case [67108864..101711679] { $block{"ManualWeight"} = "Y";
$flag_value -= 67108864 }
}
}
Thanks,
Barron