2009-06-11 25 views

回答

5

index()內找到另外一個字符串,並返回該字符串的索引或位置。

substr()將返回2個位置(從0開始)之間的字符串的子串。

縱觀上述,我懷疑正被不正確地使用的索引方法(因爲它的定義是指數STR,SUBSTR),並且它應該是

index($var, ".") 

找到「」內「abc.de」,並確定「abc.de」

+0

啊,所以原始代碼是一個優雅的方式說斬($ convar = $ var); :) – ysth 2009-06-11 14:23:00

2

這裏隱含的SUBSTR用法的一個子 -

substr EXPR,OFFSET,LENGTH 

由於偏移量爲0,操作返回字符串高達但不包括第一'。'位置(由索引(「。」,$ var)返回)轉換爲$ convar。

查看perldoc中的substrindex函數以進一步闡明問題。

0

Perl的substr函數具有格式:

substr [string], [offset], [length] 

返回從索引偏移索引中的字符串偏移量+長度

index已格式:

index [str], [substr] 

它返回str中第一次出現substr的索引。 substr('abc.de',0,index(「。」,$ var)); 將返回從索引0開始的子字符串(即'a'),直到字符數爲第一次出現字符串「。」。

所以$ convar將在例如「ABC」你有

編輯:該死的,人是太快了:P EDIT2:和Brian是對有關索引未正確使用

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 
0

驚人,你可以使用SUBSTR作爲賦值的左側將數據寫入字符串:

$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a' 
perl kicks ass! 

你不甚至需要堅持到相同的長度 - 字符串將擴大到適合。

從技術上講,這被稱爲使用substr作爲左值。