$aa = "Main:http://google-test.com:8080/service"
(or)
$aa = "http://google-test.com:8080/service2"
我想将其分为两部分:
Main:
http://google-test.com:8080/service
但它不适用于这种分裂:
split (/\:/,$aa,1);
答案 0 :(得分:5)
您需要将限制从1更改为2.
perl -le 'my $aa="Main:http://google-test.com:8080/service"; my @parts = split(/:/, $aa, 2); print scalar @parts;'
如果指定LIMIT且为正,则表示最大数量 EXPR将分成的字段,
看起来您试图将其用作拆分的最大次数而不是要返回的部件数量。
答案 1 :(得分:1)
新问题,新答案:
my ($a1, $a2) = $aa =~ /^(\w*):?(http://.+)$/;
假设“主要”部分只能是字母数字。如果省略“Main”,这也会将$a1
与空字符串匹配,您可以使用if语句或类似语句检查。
斯普利特也会工作,限制为2,因为gpojd已经回答了。
my ($a1, $a2) = split /:/, $aa, 2;
但是那时你需要检查并看看你在两个变量中捕到了什么。例如。该网址可以位于$a1
或$a2
中。然后你可能需要将它们重新加入。
答案 2 :(得分:0)
你想把它拆分为冒号吗?
尝试:
my @DATA;
$aa = "Main:http://google-test.com:8080/service";
@DATA = split(/:/, $aa);
然后您可以使用以下方式访问拆分的不同部分:
for ($i = 0; $i < @DATA; $i++)
{
print "data section $i value is: " . $DATA[$i] . "\n";
}