@list = qw(10 20 30);
sb(*list);
print "@list";

sub sb{
*copy = shift;
foreach (@copy) { $_++}
}

これだと出力は
11 21 31
になります

shiftを$_[0]と変えても
11 21 31
のままです

ところが
shiftを@_に変えると
10 20 30
となってしまいます

なんで---