2013-10-10 39 views
-2

通過將每個舊字符串的出現次數更改爲新字符串來實現處理輸入文件的程序。 (用法:chstr文件oldstring newstring,chstr是你的程序名,文件,oldstring和newstring是由用戶指定的參數)Perl替換字符串(newstring oldstring)

if(@ARGV < 2) 
{  
print "usage: ReplaceString.pl filename OldString NewString\n"; 
print " example: perl ReplaceString.pl intelliquest.txt "; 
print "IntelliQuest Kantar > kantar.txt\n"; 
exit 0; 
} 
$OldString = $ARGV[1]; 
$NewString = $ARGV[2]; 
open(MYFILE,$ARGV[0]) || die "Cannot open file \"$ARGV[0]\""; 
while($line = &lt;MYFILE&gt;) 
{ 
$line =~ s/$OldString/$NewString/g; 
print STDOUT $line; 
} 

真的不知道這裏有什麼問題,我嘗試運行

[email protected]:~/Desktop$ perl HW1-2.pl text.txt if the 

要更換,如果用,我也得到...

syntax error at HW1-2.pl line 11, near "&lt;" 
syntax error at HW1-2.pl line 11, near "&gt" 
syntax error at HW1-2.pl line 15, near "}" 
Execution of HW1-2.pl aborted due to compilation errors. 

我還需要& LT和& GT?我真的很新的對Perl

在此先感謝

無論教程你的人誰也懶得檢查,他的作品寫得清清楚楚根據本
+1

爲什麼你要避免正確縮進程序?這幾乎不可讀。 – Borodin

回答

7

&lt;&gt;分別應該是<>,但是沿着它的某個地方它被過度HTML編碼。

具體而言,線路

while($line = &lt;MYFILE&gt;) 

應改爲:

while($line = <MYFILE>) 
+0

jd @ jd-laptop:〜/ Desktop $ perl HW1-2.pl text.txt if if 語法錯誤在HW1-2.pl第13行,靠近「=>;」 語法錯誤在HW1-2.pl行13附近「<;」 語法錯誤在HW1-2.pl第17行,靠近「}」我仍然得到這個 – user1789951

+0

@ user1789951:編輯,使自己更清晰。 – jwodder

0

jwodder有答案,但你似乎感到困惑的是:

這工作我的Mac上。如果您在Linux,Mac或Unix系統上運行此操作,則需要使用 我的第一行#! /usr/bin/env perl。否則,您需要從命令行運行程序perl ReplaceString.pl

一個Windows,您必須確保該.pl後綴映射到你的Perl解釋器。

#! /usr/bin/env perl 

if(@ARGV < 2) {  
    print "usage: ReplaceString.pl filename OldString NewString\n"; 
    print " example: perl ReplaceString.pl intelliquest.txt "; 
    print "IntelliQuest Kantar > kantar.txt\n"; 
    exit 0; 
} 
$OldString = $ARGV[1]; 
$NewString = $ARGV[2]; 

open(MYFILE,$ARGV[0]) || die "Cannot open file \"$ARGV[0]\""; 

while($line = <MYFILE>) { 
    chomp $line; 
    $line =~ s/$OldString/$NewString/g; 
    print "$line\n"; 
} 

我把你的課程和學習Perl。

我只是好奇你在哪裏學習Perl。這是我期望在舊的Perl 3.x日期中看到的語法。從那以後,Perl已經有了很大的進步,我想你的老師會幫助你使用更新的語法。