Scripting 設計 小考 C
下這個指令: last | perl -ne 'printf "%6d $2 $1\n",
$3*60+$4 if /^(\w+)\s+\S+\s+\S+\s+(\S+).*\((\d\d):(\d\d)\)/' >
login-dura.txt 而產生了一個檔案 login-dura.txt,
記載著每位使用者每次登入的分鐘數, 及星期幾。
請寫一個 perl 程式, 從命令列讀入兩個參數, 並印出統計數據。 第一個參數若是 "day" 就按照星期幾統計, 若是 "user" 就按照使用者統計。 第二個參數若是 "count" 就統計 「登入人次」, 若是 "sum" 就統計 「登入的總分鐘數」。 以下是各種不同執行方式的部分輸出。
greg@penguin:~$ ./qC day count < login-dura.txt
Fri 43
Mon 55
Sat 28
Sun 30
Thu 69
Tue 75
Wed 589
greg@penguin:~$ ./qC day sum < login-dura.txt
Fri 2481
Mon 2307
Sat 1257
Sun 2864
Thu 4399
Tue 4771
Wed 38837
greg@penguin:~$ ./qC user count < login-dura.txt
cloudcol 3
greg 107
jensin 4
lhli 2
s9414001 1
... (省略) ...
s9714621 5
s9714632 41
yikuang 16
greg@penguin:~$ ./qC user sum < login-dura.txt
cloudcol 224
greg 10468
jensin 7
lhli 1
s9414001 6
... (省略) ...
s9714621 208
s9714632 4712
yikuang 825
注意及提示:
- 這次小考可以不必檢查錯誤的輸入資料。
- 寫一點 (每增加一點功能), 就測試一下; 不要把整個程式寫完才測試。 (除非你是程式設計高手)
- 先想好: 你打算用一個 hash (省空間, 列印的程式碼又簡單), 還是四個 hashes? 迴圈要放在 if 外面 (程式碼較短), 還是 if 要放在迴圈外面?
- 建議逐次增加一點功能; 逐次上傳部分成果:
- 課堂練習的成果
- 加上 if 先只處理四種組合當中, 已寫好的這一種狀況; 遇到其他組合, 就印 "not yet"
- 加入第二種組合的程式碼
- 改成完全符合題目要求。
![[rss feed 圖案]](/~ckhung//i/rss.png)
![[帶頭升級 Office 2007? 別當害群之馬]](/~ckhung//i/n7/no-office2007.png)
![[(力求維持) 符合 xhtml 1.0]](/~ckhung//i/vxhtml10.png)
