我今天在分割功能方面遇到了一些困难,并通过perlfunc读取 以查看我是否错误地解释了某些内容.我试图在'.'上分割一个字符串,因此应该支持perlfunc:
my $string = "hello.world";
my ($hello, $world) = split(".", $string);
Run Code Online (Sandbox Code Playgroud)
要么
my $string = "hello.world";
my ($hello, $world) = split(/\./, $string);
Run Code Online (Sandbox Code Playgroud)
但是,测试第一个导致空变量,所以我将测试扩展到以下内容:
#!/usr/bin/perl
use strict;
use warnings;
my $time_of_test = "13.11.19.11.45.07";
print "TOD: $time_of_test\n";
my ($year, $month, $day, $hr, $min, $sec) = split(/\./, $time_of_test);
print "Test 1 -- Year: $year month: $month day: $day hour: $hr min: $min sec: $sec\n";
($year, $month, $day, $hr, $min, $sec) = split(".", $time_of_test);
print "Test 2 -- Year: $year month: $month day: $day hour: $hr min: $min sec: $sec\n";
($year, $month, $day, $hr, $min, $sec) = split('.', $time_of_test);
print "Test 3 -- Year: $year month: $month day: $day hour: $hr min: $min sec: $sec\n";
($year, $month, $day, $hr, $min, $sec) = split("\.", $time_of_test);
print "Test 4 -- Year: $year month: $month day: $day hour: $hr min: $min sec: $sec\n";
($year, $month, $day, $hr, $min, $sec) = split('\.', $time_of_test);
print "Test 5 -- Year: $year month: $month day: $day hour: $hr min: $min sec: $sec\n";
Run Code Online (Sandbox Code Playgroud)
这是输出:
> ./test.pl
TOD: 13.11.19.11.45.07
Test 1 -- Year: 13 month: 11 day: 19 hour: 11 min: 45 sec: 07
Test 2 -- Year: month: day: hour: min: sec:
Test 3 -- Year: month: day: hour: min: sec:
Test 4 -- Year: month: day: hour: min: sec:
Test 5 -- Year: 13 month: 11 day: 19 hour: 11 min: 45 sec: 07
Run Code Online (Sandbox Code Playgroud)
这是否按预期工作?如果是这样,我是如何误解perlfunc文档的?
split的第一个参数是正则表达式.你永远不应该在这里使用字符串(特殊情况除外" "
),因为它对实际行为有误导性.
与分裂时,你有没有结果的原因"."
,并'.'
是,它是解释这些正则表达式(分上的一切).
使用/\./
并'\.'
获得预期结果,因为点在正则表达式中正确转义.
您没有得到任何结果,"\."
因为在被视为正则表达式之前,它首先被双引号字符串视为转义序列split
.当它进入split
呼叫时,它就像是一样"."
.
归档时间: |
|
查看次数: |
251 次 |
最近记录: |