gpt4 book ai didi

arrays - 处理输入数据时获取 "The second parameter of split is a string, not an array"

转载 作者:行者123 更新时间:2023-12-02 01:08:05 24 4
gpt4 key购买 nike

我对此很陌生(第一篇文章!),并且已经搜索类似的问题很多天了,但我一生都找不到足够类似的东西来提供帮助(或者如果存在的话无法识别它) 。如果我错误地发布了这个问题,请引导我到正确的地方:)

::

所以我刚刚开始使用 Perl,我需要一些输入:

xxx00_xxxx_xxx00 并将字符串拆分为由“_”分隔的位。我已经使用数组完成了此操作。

现在的问题是我想将数组中的值分配给变量,以便我可以使用它们。

这是我的新手代码:

#!/usr/bin/perl

use strict;
use warnings;

# take input
print "enter ID:\n";
my $input = <>;

#split input
my @values = split( '_', $input );

print "$values[0]\n";
print "$values[1]\n";
print "$values[2]\n";

#assign split components to variables
my $customer_ID = $values[0];
my $service_ID = $values[1];
my $ipac_ID = $values[2];

#print components
print "Customer ID: $customer_ID";
print "Service ID: $service_ID";
print "IPAC ID: $ipac_ID";

exit 0;

顺便说一句,我知道第 19 行有错误(我也无法弄清楚......)

感谢任何帮助 - 谢谢!

最佳答案

消息The second argument of split is a string, not an array来自您正在使用的Padre IDE,而不是来自Perl。它是由 Padre 的“初学者模式”生成的,它天真地检查文本 split 和下一个分号之间是否有 @,甚至跨多行,如果有则它假定您犯了一个错误。当然,这种方法不允许评论。

您遇到的唯一错误 - 如果您可以称其为错误 - 是

  • 您将换行符保留在输入字符串的末尾,因此它看起来像 "xxx00_xxxx_xxx00\n" 并且 split 将生成 “xxx00”,“xxxx”,“xxx00\n”。一个简单的 chomp $input 将删除换行符

  • 您不会在每个标量值后打印换行符,因此您的输出全部在一行上,您的 session 如下所示

    enter ID:
    xxx00_xxxx_xxx00
    xxx00
    xxxx
    xxx00
    Customer ID: xxx00Service ID: xxxxIPAC ID: xxx00

    您需要做的就是在每个 print添加一个换行符(就像您对之前的 print 语句所做的那样),如下所示

    print "Customer ID: $customer_ID\n";
    print "Service ID: $service_ID\n";
    print "IPAC ID: $ipac_ID\n";

具有更明显选择的程序的更整洁版本将如下所示

#!/usr/bin/perl

use strict;
use warnings;

# take input
print 'Enter ID: ';
my $input = <>;
chomp $input;

# Split input
my @values = split /_/, $input;

print "$_\n" for @values;

# Assign split components to variables
my ($customer_ID, $service_ID, $ipac_ID) = @values;

#print components
print "Customer ID: $customer_ID\n";
print "Service ID: $service_ID\n";
print "IPAC ID: $ipac_ID\n";

关于arrays - 处理输入数据时获取 "The second parameter of split is a string, not an array",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096078/

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