Perl 为什么不';我的推送和弹出方法不起作用吗?

Perl 为什么不';我的推送和弹出方法不起作用吗?,perl,stack,Perl,Stack,我试图在Perl中实现一个堆栈,其中有一个数组。我想推送数组中的项目,弹出项目并打印出新数组,如下所示:“1,2,3,5,6 我的代码只是将数字6添加到数组的顶部 #!usr/bin/perl @array = 1..5; push @array, 6; #Push the number 6 into the array pop @array, 4; #Pop the number 4 out of the array print "The array is now $array[-1].\

我试图在Perl中实现一个堆栈,其中有一个数组。我想推送数组中的项目,弹出项目并打印出新数组,如下所示:“1,2,3,5,6

我的代码只是将数字6添加到数组的顶部

#!usr/bin/perl

@array = 1..5;
push @array, 6; #Push the number 6 into the array 
pop @array, 4; #Pop the number 4 out of the array
print "The array is now $array[-1].\n";

首先,使用
使用严格;使用警告;

pop@array,4;
应该做什么

流行四元素

splice(@array, -4);
将最后一个元素替换为值4

$array[-1] = 4;
@array = grep { $_ != 4 } @array;
过滤掉值4

$array[-1] = 4;
@array = grep { $_ != 4 } @array;
参考:


顺便说一下,
#usr/bin/perl
毫无意义。它应该是
#!/usr/bin/perl


顺便说一下,换行的顺序是<代码> \n>代码>,不是<代码> /n>代码> .

堆栈的整个点是只能从顶部访问项目。您只能将一个项目推到堆栈顶部或从堆栈顶部弹出一个项目。中间的元素是不可访问的。还可以实现队列和出列(或双端队列)


语法不正确:
pop@array,4;


最多应使用一个参数(数组)。它将从数组堆栈中弹出最后一个元素,而从堆栈中取出第一个元素。

您希望
pop@array,4;
做什么?您没有使用strict,您没有使用警告。在开发Perl代码时,您应该始终启用警告。我希望pop@array,4从数组中弹出数字4,并打印出数组因此,1,2,3,5,6.除了perl之外,弹出堆栈不会提取特定元素,它会删除最近推送的元素,不管它的值是什么。它可能相当于
pop(@array),4;
,使用逗号运算符。是的,但是根据他的描述,他想拼接出包含值
4