2012-10-11 25 views
0

我想用連字符替換所有空格,但空格替換爲045而不是-。表達式爲:在Perl中用連字符替換空格

s/ /-/g 

表達s/ /_/g(用下劃線代替)的作品,所以我不知道爲什麼i have apples成爲

i,045have,045apples 
+0

你可以給發生錯誤最少的代碼示例。 FYI a「 - 」是ASCII代碼中的十進制45,因此您的模式匹配與您意想不到的結果之間存在關聯。 – damage

+0

$ fstring =〜s// -/g;這是所有的代碼... –

+2

如果這是所有的代碼,那麼你怎麼知道它有045呢? :) –

回答

5

此代碼工作正常,我:

#!/usr/bin/perl 
use v5.14; 
use strict; 
use warnings; 
my $test = "I like Apples"; 
$test=~s/ /-/g; 
say $test; 

它輸出I-like-Apples

如果您提供更多信息,我們可以幫助您提供有關代碼錯誤行爲原因的更多信息。

信息我們想:

  • 你是如何看的輸出?
  • 它使用什麼字符集($ LANG在一個外殼中)
  • 你在哪個平臺上?
  • 什麼版本的Perl?
  • 你是否在代碼中的任何地方混淆了本地或字符集?
  • 請提供更多的代碼,即不僅僅是替換行,您如何獲得字符串以及如何打印?
+0

這很奇怪,我的代碼就是這樣:$ fstring =〜s// -/g; –

+0

剛剛在我的命令行上試過了,對我來說也很好,使用Perl 5.14.2 – damage

+0

十六進制轉儲perl源文件以查看是否有任何奇怪的事情發生。 – Gilbert

2

此代碼的工作完美的我:

echo I have apples | perl -p -e 's/\ /-/g' 
I-have-apples