2012-07-16 24 views
2

在Perl中,可以說我在變量中有字母A,名稱爲$character,我希望它變成B,我該怎麼做? $character也可以是數字(0-8),我想這兩種方法的工作方式? (類似於二進制轉換,但不完全確定它是否是這樣的)。提前致謝。Perl上去了一個角色?

回答

8

增量運算符可能是您想要的。但是,確保你想要邊界行爲。例如:

my $character = 'Z'; 
print ++$character; 

產地:

AA 

這就是 「隨身帶」,從http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-decrement

+0

完美,非常感謝! – Grigor 2012-07-16 03:28:30

+0

除了關於進位的警告外,這與@ perreal的相同。所以我很困惑,這一個工作,其他沒有? – 2012-07-16 03:29:57

+0

@Mark Reed,可能是因爲他使用perreal的代碼時輸出了'$ character ++'而不是'$ character'的結果。很難說清楚,因爲他沒有提供他實際得到的信息或他實際使用的代碼。 – ikegami 2012-07-16 03:35:43

7

簡單的增量應該做你想要什麼:

my $character = "A"; 
$character++; 

perl-doc

自動遞增經營者有一點點額外的內置魔法吧。如果 您增加了一個數字變量,或者在數字上下文中曾經使用過 ,您會得到一個正常增量。但是,如果 變量自設置後僅在字符串上下文中使用,並且 的值不是空字符串,並且與 /^ a-zA-Z * 0-9 * \ z/,增量作爲一個字符串完成,保留每個 字符在其範圍內,帶進位

+0

它說不能增加,因爲它不是數字 – Grigor 2012-07-16 03:17:46

+2

我從來沒有見過Perl問題的消息。什麼版本?這在這裏工作正常:'perl -le'我的$字符=「A」; $字符++;打印$字符;''=>'B'。 – 2012-07-16 03:19:43

+4

這不是一個Perl [問題](http://perldoc.perl.org/perldiag.html)的消息。最接近的是「參數...不是數字」,但我不明白你是如何從'++'得到的。請使用您實際使用的代碼和輸入。 – ikegami 2012-07-16 03:32:53

0

只需添加到其他答覆:

注意,如果有問題的變量從未在數字語境中神奇的自動增量才起作用。因此:

perl -e '$x = "A"; ++$x; print $x' # prints "B" 

但是:

perl -e '$x = "A"; $x + 0; ++$x; print $x' # prints "1" 

要保證始終得到神奇的自動增量,應該字符串化變量明確事先:

perl -e '$x = "A"; $x + 0; $x = "$x"; ++$x; print $x' # prints "B" 

它可能會跳過這如果你知道你正在增加的變量的歷史記錄,並且可以驗證它從未在數字上下文中使用過。

玩魔術可能會很棘手!

相關問題