perl中shift

perl中shift

perl中的shift究竟代表什么含义,看了一些书和资料 仍然很迷糊  比方说下面这段程序shift具体代表什么
use Cwd;
sub ScanDirectory{
    my ($workdir) = shift;

my ($startdir) = &cwd;
................
}

谁可以用老百姓能听得懂的语言解释一下
shift @_


QUOTE:
原帖由 Lonki 于 2007-11-24 15:12 发表
shift @_

我 这个例子中的 shift具体代表什么????
google or baidu

http://perl.11138.net/doc/online/perl-toc/zh-CN/ch03.html


QUOTE:
原帖由 cnhawk386 于 2007-11-24 15:39 发表


我 这个例子中的 shift具体代表什么????

ScanDirectory("C:/", "D:/");

每一个shift就表示拿走一个值。
如你的例子,第一个shift就取走了“C:/”,这样 $workdir 就等于“C:/”,这样说通俗吧。
谢谢freeand
其实我也google baidu 过了 没找到好文章
shift不是一个variable, 是一个function.

my ($workdir) = shift; ### 省略了shift的默认参数, 完整语句是:
my ($workdir) = shift @_; ### 此处@_是所有传入参数组成的list

为什么不多试一试呢, shift前print下@_, shift后print下$workdir和@_
难道不会
perldoc -f shift ?
shift是一个函数,移动一个列表的函数,从列表头开始移动,有点像pop,pop是在列表尾移动,因此你可以把shift看做是一个队列成员的出队函数。