我的变量$var
的格式为'abc.de'。这个substr在这个陈述中究竟做了什么:
$convar = substr($var,0,index(".",$var));
答案 0 :(得分:5)
index()
在另一个字符串中找到一个字符串,并返回该字符串的索引或位置。
substr()
将返回2个位置之间的字符串的子串(从0开始)。
看看上面的内容,我怀疑索引方法的使用不正确(因为它的定义是索引STR,SUBSTR ),它应该是
index($var, ".")
找到'。'在'abc.de'中并确定“abc.de”的子串
答案 1 :(得分:2)
这里隐含的子用法是 -
substr EXPR,OFFSET,LENGTH
由于偏移量为0,因此操作返回字符串upto但不包括第一个'。'位置(由index(“。”,$ var)返回)到$ convar。
答案 2 :(得分:0)
Perl substr函数的格式为:
substr [string], [offset], [length]
将字符串从索引偏移量返回到索引偏移量+长度
index格式为:
index [str], [substr]
返回str。中第一次出现substr的索引。
so substr('abc.de',0,index(“。”,$ var)); 将返回从索引0开始的子字符串(即'a'),直到第一次出现字符串的字符数“。”
所以$ convar在你拥有的例子中会有“abc”
编辑:该死的,人太快了:P edit2:并且Brian对索引使用不正确答案 3 :(得分:0)
为什么不运行它并找出来?
#!/usr/bin/perl my $var = $ARGV[0]; my $index = index(".",$var); print "index is $index.\n"; my $convar = substr($var, 0, $index); print "convar is $convar.\n";
在一堆单词上运行它,看看会发生什么。
此外,您可能需要输入:
perldoc -f index perldoc -f substr
答案 4 :(得分:0)
非常棒,您可以使用substr作为作业的左侧将数据写入子字符串:
$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!
你甚至不需要坚持相同的长度 - 字符串将扩展到适合。
从技术上讲,这被称为使用substr作为左值。