2012-10-11 7 views
0

모든 공백을 하이픈으로 바꾸고 싶지만 - 대신 공백을 045으로 바꿉니다. 표현은 다음과 같습니다Perl에서 공백을 하이픈으로 바꾸기

s/ /-/g 

(대신 밑줄) 표현 s/ /_/g 작품 그래서 i have apples

i,045have,045apples 
+0

당신은 오류가 발생하는 최소한의 코드 예제를 제공 할 수 있습니다. FYI "-"는 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

16 진수는 거기에 이상한 일이 있는지 볼 펄 소스를 덤프. – Gilbert

2

이 코드는 나를 위해 완벽하게 작동합니다 :

echo I have apples | perl -p -e 's/\ /-/g' 
I-have-apples 
관련 문제