Arrays 获得;split的第二个参数是字符串,而不是数组";在处理输入数据时
我是新来的(第一篇帖子!),已经搜索了一个类似的问题好几天了,但我一生都找不到足够相似的东西来帮助我(或者如果有,我就认不出来)。如果我发错了这个问题,请告诉我正确的位置:) :: 所以我刚刚开始使用Perl,我需要一些输入: xxx00_xxxx_xxx00并将字符串拆分为由“x00”分隔的位。这是我使用数组完成的 问题是现在我想把数组中的值分配到变量中,这样我就可以使用它们了 以下是我的新手代码:Arrays 获得;split的第二个参数是字符串,而不是数组";在处理输入数据时,arrays,string,perl,variables,split,Arrays,String,Perl,Variables,Split,我是新来的(第一篇帖子!),已经搜索了一个类似的问题好几天了,但我一生都找不到足够相似的东西来帮助我(或者如果有,我就认不出来)。如果我发错了这个问题,请告诉我正确的位置:) :: 所以我刚刚开始使用Perl,我需要一些输入: xxx00_xxxx_xxx00并将字符串拆分为由“x00”分隔的位。这是我使用数组完成的 问题是现在我想把数组中的值分配到变量中,这样我就可以使用它们了 以下是我的新手代码: #/usr/bin/perl 严格使用; 使用警告; #听取意见 打印“输入ID:\n”; 我
#/usr/bin/perl
严格使用;
使用警告;
#听取意见
打印“输入ID:\n”;
我的$input=;
#分割输入
my@values=split('.',$input);
打印“$values[0]\n”;
打印“$values[1]\n”;
打印“$values[2]\n”;
#将拆分组件分配给变量
我的$customer_ID=$values[0];
my$service_ID=$values[1];
my$ipac_ID=$values[2];
#打印组件
打印“客户ID:$Customer_ID”;
打印“服务ID:$Service_ID”;
打印“IPAC ID:$IPAC_ID”;
出口0;
顺便说一句,我知道我在第19行有错误(我也不知道…)
感谢您的帮助-谢谢 您可能更喜欢这样:
my ($customer_ID, $service_ID, $ipac_ID) = split('_', $input);
你是在用键盘输入吗 如果是,请尝试将
$input=
替换为$input=
顺便问一下,您收到的错误是什么?您可以像这样清理代码:
print "enter ID: ";
chomp(my $input = <STDIN>);
my ($customer_ID, $service_ID, $ipac_ID) = split(/_/, $input);
print "Customer ID: $customer_ID ";
print "Service ID: $service_ID ";
print "IPAC ID: $ipac_ID\n";
split的第二个参数是字符串,而不是数组,消息
来自您正在使用的Padre IDE,而不是Perl。它是由Padre的“初学者模式”生成的,该模式天真地检查文本拆分
和下一个分号之间是否存在@
,甚至跨多行,如果是这样,则假定您犯了错误。当然,这种方法不允许评论
你唯一的错误——如果你可以称之为错误的话——是
- 您将换行保留在输入字符串的末尾,因此它看起来像
“xxx00\u xxxx\u xxx00\n”
,拆分将产生“xxx00”、“xxxx”、“xxx00\n”
。一个简单的chomp$input
将删除该换行符
- 您不会在每个标量值之后打印换行符,因此您的输出都在一行上,并且您的会话如下所示
enter ID:
xxx00_xxxx_xxx00
xxx00
xxxx
xxx00
Customer ID: xxx00Service ID: xxxxIPAC ID: xxx00
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";
您所需要做的就是在每个print
上添加一个换行符(就像您以前对print
语句所做的那样),如下所示
enter ID:
xxx00_xxxx_xxx00
xxx00
xxxx
xxx00
Customer ID: xxx00Service ID: xxxxIPAC ID: xxx00
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";
一个更整洁的程序版本和更明显的选择会是这样的
enter ID:
xxx00_xxxx_xxx00
xxx00
xxxx
xxx00
Customer ID: xxx00Service ID: xxxxIPAC ID: xxx00
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";
#/usr/bin/perl
严格使用;
使用警告;
#听取意见
打印“输入ID:”;
我的$input=;
chomp$输入;
#分割输入
my@values=split/u/,$input;
为@values打印“$\un”;
#将拆分组件分配给变量
我的($customer\u ID、$service\u ID、$ipac\u ID)=@值;
#打印组件
打印“客户ID:$Customer\u ID\n”;
打印“服务ID:$Service\u ID\n”;
打印“IPAC ID:$IPAC\U ID\n”;
@mpapec如何将数组[0]中的分割数据存储到一个变量中,以供以后在程序中使用您已经将分割操作中的数据分配给变量--$customer\u ID、$service\u ID等@ialarmedalien是的,我认为它不起作用,但它确实起作用了!这里真的有问题吗?似乎您已经回答了。第19行出现了什么错误?第19行:split的第二个参数是字符串,而不是数组。我可以问chomp是做什么的,为什么在代码段中使用它?@Unixmonkey不正确--chomp
从字符串的末尾剪切一个新行标记。它实际上被设置为删除$/
(输入记录分隔符),默认情况下这是新行标记。如果您将$/
设置为其他值,chomp
将删除该值。Borodin将split'
更改为split/
,因为split
的第一个参数应为正则表达式,因此您不妨将其设置为正则表达式。