gpt4 book ai didi

perl - 如何解决警告 "Use of assignment to $[ is deprecated"?

转载 作者:行者123 更新时间:2023-12-01 07:06:31 25 4
gpt4 key购买 nike

我有一个从旧电脑下载到新电脑的程序。它有以下代码片段:

#!/bin/perl -w

use strict;

$[ = 1; # set array base to 1
$, = ' '; # set output field separator
$\ = "\n"; # set output record separator

但是,当我尝试运行脚本时,我收到以下错误消息:
Use of assignment to $[ is deprecated at ./test.pl line 5.

关于如何解决这个问题的任何想法?

我正在使用以下版本的 perl:
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

最佳答案

$[的使用已被劝阻、弃用和 all but disallowed .见 it in perlvar (它在 Deprecated and Removed Variables 部分†)并查看核心 arybase它被移动的地方。
尽管如此,如果你必须,你可以禁用这个特殊的 warning category (更新:仅在 v5.30 之前)†

use strict;
use warnings;

# Restrict the scope as much as possible
{
no warnings 'deprecated';
$[ = 1; # NOT possible in v5.30+

# ...
}
现在它不会打印那个警告,它会起作用,因为它仍然是合法的。 (不在 v5.30+ 中)†
请注意,这也会更改其他偏移量,例如字符串,但还不会更改其他偏移量。这是一个非常非常古老的“功能”,请阅读文档。
我强烈推荐 重写脚本 ,如果可能的话。

† 还是一样的状态 in v5.30 ...但是:“不再可能为 $[ 分配非零值”。
因此你不能再分配,不管警告或错误(那些可以被抑制或处理)。然后要么 重写脚本 或使用 Array::Base如果您必须使用该偏移量,如 mob's answer

关于perl - 如何解决警告 "Use of assignment to $[ is deprecated"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com