Gmail ปฏิทิน เอกสาร ภาพถ่าย เว็บ เพิ่มเติม »
กลุ่มที่เยี่ยมชมเมื่อเร็วๆ นี้ | ความช่วยเหลือ | เข้าสู่ระบบ
หน้าแรกของ Google Groups
perl -pe substitution
ปัจจุบันมีหัวข้อในกลุ่มนี้มากเกินไปที่จะแสดงผลก่อนหากต้องการให้หัวข้อนี้ปรากฏก่อน ลบตัวเลือกนี้ออกจากหัวข้ออื่น
เกิดข้อผิดพลาดในการประเมินผลคำขอของคุณโปรดลองใหม่อีกครั้ง
ธง
  3 ข้อความ - ย่อทั้งหมด  -  แปลทั้งหมดเป็น ฉบับแปล (ดูต้นฉบับทั้งหมด)
กลุ่มที่คุณกำลังโพสต์ข้อความเข้าไปเป็นกลุ่ม Usenet ข้อความที่ถูกส่งไปยังกลุ่มนี้จะแสดงอีเมลต่อทุกๆ คนบนอินเทอร์เน็ต
ข้อความตอบกลับของคุณยังไม่ถูกส่งออกไป
การโพสต์ของคุณสำเร็จแล้ว
 
จาก:
ถึง:
สำเนา:
การติดตามผล:
เพิ่ม Cc | เพิ่มการติดตามผลไปยัง | แก้ไขเรื่อง
เรื่อง:
การตรวจสอบความถูกต้อง:
เพื่อประโยชน์ในการตรวจสอบ โปรดพิมพ์อักขระที่เห็นในภาพด้านล่างหรือตัวเลขที่ได้ยินโดยคลิกที่ไอคอนการเข้าถึงได้ ฟังและพิมพ์ตัวเลขที่คุณได้ยิน
 
Asim Suter  
ดูโปรไฟล์   แปลเป็น ฉบับแปล (ดูต้นฉบับ)
 ตัวเลือกเพิ่มเติม 19 ม.ค. 2008, 03:24
กลุ่มข่าว: alt.comp.lang.perl
จาก: "Asim Suter" <asu...@cisco.com>
วันที่: Fri, 18 Jan 2008 12:24:21 -0800
ท้องที่: ส 19 ม.ค. 2008 03:24
เรื่อง: perl -pe substitution

Case 1)

my $VAR = 'ABC@VERSION@DEF' ;

$VAR =~ s/\@VERSION\@/1.2.3.4/g ;

print "<$VAR>\n" ;

Prints <ABC1.2.3.4DEF> as expected.

=========================

Case 2)

Lets say $input_file has a line containing ABC@VERSION@DEF

And I want to replace @VERSION@ by 1.2.3.4 So I do:

`perl -pe 's/\@VERSION\@/1.2.3.4/g' -i $input_file` ;

Which chnages the content in $input_file to

ABC1.2.3.4VERSION1.2.3.4DEF

Why the difference in the two cases ?

What do I need to do to get bahavior like Case 1 in Case 2 ?

I'd suspect some special interpretation of @ at play but it's escaped - but
not sure any ideas ?

Thanks!


    ส่งต่อ  
คุณต้อง เข้าสู่ระบบ ก่อนจึงจะสามารถโพสต์ข้อความได้
หากต้องการโพสต์ข้อความ คุณต้องเข้าร่วมกลุ่มนี้ก่อน
โปรดอัปเดตชื่อเล่นของคุณในหน้า การตั้งค่าการสมัคร ก่อนที่จะโพสต์
คุณไม่ได้รับสิทธิ์ที่จำเป็นในการโพสต์
Dr.Ruud  
ดูโปรไฟล์   แปลเป็น ฉบับแปล (ดูต้นฉบับ)
 ตัวเลือกเพิ่มเติม 20 ม.ค. 2008, 19:27
กลุ่มข่าว: alt.comp.lang.perl
จาก: "Dr.Ruud" <rvtol+n...@isolution.nl>
วันที่: Sun, 20 Jan 2008 13:27:08 +0100
ท้องที่: อา 20 ม.ค. 2008 19:27
เรื่อง: Re: perl -pe substitution
Asim Suter schreef:

> s/\@VERSION\@/1.2.3.4/g

Consider a "while ( my $p=index() ){ substr(,,,) }" approach.

--
Affijn, Ruud

"Gewoon is een tijger."


    ส่งต่อ  
คุณต้อง เข้าสู่ระบบ ก่อนจึงจะสามารถโพสต์ข้อความได้
หากต้องการโพสต์ข้อความ คุณต้องเข้าร่วมกลุ่มนี้ก่อน
โปรดอัปเดตชื่อเล่นของคุณในหน้า การตั้งค่าการสมัคร ก่อนที่จะโพสต์
คุณไม่ได้รับสิทธิ์ที่จำเป็นในการโพสต์
Joe Smith  
ดูโปรไฟล์   แปลเป็น ฉบับแปล (ดูต้นฉบับ)
 ตัวเลือกเพิ่มเติม 21 ม.ค. 2008, 11:48
กลุ่มข่าว: alt.comp.lang.perl, comp.lang.perl.misc
จาก: Joe Smith <j...@inwap.com>
วันที่: Sun, 20 Jan 2008 20:48:42 -0800
ท้องที่: จ 21 ม.ค. 2008 11:48
เรื่อง: Re: perl -pe substitution

Asim Suter wrote:
> `perl -pe 's/\@VERSION\@/1.2.3.4/g' -i $input_file` ;

> Which chnages the content in $input_file to

> ABC1.2.3.4VERSION1.2.3.4DEF

> Why the difference in the two cases ?

> What do I need to do to get bahavior like Case 1 in Case 2 ?

> I'd suspect some special interpretation of @ at play but it's escaped

It's not escaped to the shell nor to the second invocation of perl.

@VERSION = qw(aaa bbb);
$_ = `echo perl -pe 's/\@VERSION\@/1.2.3.4/g' -i $input_file`;
$_ = `echo perl -pe 's/\\@VERSION\\@/1.2.3.4/g' -i $input_file`;
$_ = `echo perl -pe 's/\\\@VERSION\\\@/1.2.3.4/g' -i $input_file`;
system  qq{perl -pe 's/\\\@VERSION\\\@/1.2.3.4/g' -i $input_file};

Take a look at 'perldoc backticks'.  In particular, the sections for
   What's wrong with using backticks in a void context?
   How can I call backticks without shell processing?

        -Joe


    ส่งต่อ  
คุณต้อง เข้าสู่ระบบ ก่อนจึงจะสามารถโพสต์ข้อความได้
หากต้องการโพสต์ข้อความ คุณต้องเข้าร่วมกลุ่มนี้ก่อน
โปรดอัปเดตชื่อเล่นของคุณในหน้า การตั้งค่าการสมัคร ก่อนที่จะโพสต์
คุณไม่ได้รับสิทธิ์ที่จำเป็นในการโพสต์
สิ้นสุดข้อความ
« กลับสู่การสนทนา หัวข้อใหม่     หัวข้อเก่ากว่า

สร้างกลุ่ม - Google Groups - หน้าแรกของ Google - ข้อตกลงการใช้บริการ - นโยบายส่วนบุคคล
©2010 Google