我的变量$var
的格式为“abc.de”。这个 substr 在这个语句中到底做了什么:
$convar = substr($var,0,index(".",$var));
index()
在另一个字符串中查找一个字符串并返回该字符串的索引或位置。
substr()
将返回 2 个位置之间的字符串的子字符串(从 0 开始)。
看上面,我怀疑 index 方法使用不正确(因为它的定义是index STR, SUBSTR),应该是
index($var, ".")
找到“。” 在“abc.de”中并确定“abc.de”的子串
Perl substr函数具有以下格式:
substr [string], [offset], [length]
返回从索引偏移到索引偏移+长度的字符串
索引具有格式:
index [str], [substr]
它返回 str 中第一次出现 substr 的索引。
所以 substr('abc.de', 0, index(".", $var)); 将返回从索引 0 开始的子字符串(即 'a'),直到第一次出现字符串“。”的字符数。
所以 $convar 在你的例子中会有“abc”
编辑:该死,人们太快了:P 编辑2:布赖恩关于索引使用不正确的说法是正确的
为什么不运行它并找出答案?
#!/usr/bin/perl 我的 $var = $ARGV[0]; 我的 $index = index(".",$var); print "index 是 $index.\n"; 我的 $convar = substr($var, 0, $index); print "convar is $convar.\n";
在一堆单词上运行它,看看会发生什么。
此外,您可能需要输入:
perldoc -f 索引 perldoc -f substr
神奇的是,您可以使用 substr 作为赋值的左侧将数据写入子字符串:
$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!
您甚至不需要坚持相同的长度 - 字符串会扩展以适合。
从技术上讲,这被称为使用 substr 作为左值。