我是Perl编程的新手.我正在尝试拆分功能.这是我的代码:
#!perl;
use strict;
use warnings;
use Data::Dumper;
my @sections = ("Hard Drive", "Multi Drive");
foreach my $secname (sort @sections)
{
my $file_name=split / /, $secname;
print $file_name;
}
Run Code Online (Sandbox Code Playgroud)
所以我试图只输出第二个字的输出.
输出是
22
预期的产出是:
drive
drive
Run Code Online (Sandbox Code Playgroud)
在这里,我试图得到第二个字,但它没有给出预期的输出.
请有人建议并帮助我.
当您从Perl函数中获得意外行为时,您的第一步应该是阅读该函数的文档.说明这个的文件split:
将字符串EXPR拆分为字符串列表,并返回列表上下文中的列表,或标量上下文中列表的大小.
因此,在标量上下文中,split返回列表中的元素数,而不是实际列表.你的代码:
my $file_name = split / /, $secname;
Run Code Online (Sandbox Code Playgroud)
正在调用split标量上下文(因为您将结果分配给标量变量).为了得到你想要的结果,你需要split在列表上下文中调用.有很多方法可以实现这一目标.
# Assign to an array, take the second element
my @bits = split / /, $secname;
my $file_name = $bits[1];
# Use a list slice to only get the value that you want
my $file_name = (split / /, $secname)[1];
# Use a list assignment
my (undef, $file_name) = split / /, $secname);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |