查看單個文章
舊 2006-12-28, 09:44 PM   #3 (permalink)
Chin-Wei 帥哥
長老會員
 
Chin-Wei 的頭像
榮譽勳章
UID - 114112
在線等級: 級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時
註冊日期: 2007-02-18
文章: 3448
精華: 0
現金: 1674 金幣
資產: 32804 金幣
預設

引用:
作者: 飛鳥
#!/usr/bin/perl

print "請輸入要分析英文單字出現的頻率:";
my $line=<>; #從標準輸入,放入變數$line
print "\n";
chomp $line; #去除輸入最後的換行字元
$line=~s/\,/ /g; #符號整理
$line=~s/\./ /g; #符號整理
$line=~s/\!/ /g; #符號整理
$line=~s/\?/ /g; #符號整理
$line=~s/\;/ /g; #符號整理
$line=~s/\:/ /g; #符號整理
$line=~s/\"/ /g; #符號整理
$line=~s/\'/ /g; #符號整理
$line=~s/ / /g; #整理多餘空白鍵
$line=~s/ / /g; #整理多餘空白鍵

my @arrr;
@arrr=split(/ / , $line); #把文章,以空白鍵作分開單字的關鍵,放入陣列中


my @repeat;

for (my $i=0;$arrr[$i];$i++){

for (my $j=0;$arrr[$j];$j++){
$repeat[$i][0] = $arrr[$i];
$repeat[$i][1] = $repeat[$i][1] + 1 if ($arrr[$i] eq $arrr[$j]); #比對單字,出現一次寫入$repeat二維陣列中
}

}

#print出所有單字出現的次數
for (my $i=0;$arrr[$i];$i++){
print "$arrr[$i] 出現了 $repeat[$i][1] 次\n";
}

$line=<>;

Perl 不愧是用來處理字串專用的程式語言,能夠在這麼短短的幾行就解決確實名不虛傳
阿鳥老大 BASH 熟嗎?BASH 熟的話在處理很多東西會很方便喔~ ^_^
例如這題用 BASH 來解,只要...... 一行

引用:
cat "文章內容"|tr A-Z a-z|tr -c [^a-z] '\n'|grep -v ^$|sort|uniq -c|sort -k1,1nr|head -n 3
輸出結果:
引用:
   11 the
   5 ford
   5 president


第二題會比較刺激喔~~~
期待 Perl 的精彩演出~







====

可能有人覺得第一道題目很沒意義,我換個方式說大伙就知道這個可以用來做什麼。

題目:
請在 /var/log/secure LOG檔中找出嘗試入侵主機超過10次的IP,並在Firewall中封鎖該IP。

大伙是不是也漸漸感受到 BASH 的魔力 ^^?
__________________
思考,正是從一個錯誤,跳進另外一個錯誤。
Chin-Wei 目前離線  
送花文章: 5387, 收花文章: 1361 篇, 收花: 5457 次
回覆時引用此帖