唔好巨集

從零學習巨集,創造無人仙境。

利用Perl Sub產生excel報告

| Comments

爬塔結束時大家最想知道什麼,大概是以下三點吧?

  1. 誰撿了什麼?
  2. 什麼時侯撿?
  3. 撿了多少次?

今天教大家利用perl sub產生excel報告

巨集使用條件及注意事項:

  • 隊伍成員撿取了物品有效,好像只對有貴重物或裝備才有效。
  • 必須與隊員同一地圖

partyitemlog
1
2
3
4
5
6
automacro partyitemlog {
  console /隊伍成員 (.*) 撿取了物品 (.*)/
  call {
    write2file("$.map","$.lastMatch1","$.lastMatch2")   # 呼叫perl sub並連帶地圖人物物品資料
  }
}

write2file
1
2
3
4
5
6
7
8
9
10
11
12
13
sub write2file {
  my ($map, $name, $desc) = @_;          # 把partyitemlog送來的資料代入$map,$name,$desc
  open(FILE, ">>:utf8", "$Settings::logs_folder/partyitem.csv"); # 打開logs資料夾下的csv檔,如沒有會自動產生。
  my @date  = localtime time;                # 讀取這一刻日期跟時間
  $date[5] += 1900;
  $date[4] += 1;
  my $time = sprintf(
  "%04d-%02d-%02d %02d:%02d:%02d",        # 自訂格式,個人比較喜歡用YYYY-MM-DD HH:MM:SS
  $date[5],$date[4],$date[3],$date[2],$date[1],$date[0]);     # 對應格式
  my $log = "$time,$map,$name,$desc\n"; # 自訂資料格式跟次序
  print FILE $log;                       # 把資料寫入檔案
  close(FILE);                           # 關閉檔案
}

以下是利用notepad打開partyitem.csv檔案的範本,符號,是csv檔用作分隔。

    2013-04-05 18:42:47,1@tower23,隊員A,變形長靴
    2013-04-05 18:42:56,1@tower23,隊員B,血斧
    2013-04-05 18:42:58,1@tower55,隊員A,獸人英雄卡片

excel直接開會如圖下,如出現亂碼請用notepad打開partyitem.csv再儲存一次就解決。做一次以後就再不會出現亂碼。

只要在第一行加入標題然後選擇,再按filter。

成功後就如下圖標題尾多了一個向下三角型按鈕,然後可以根據人物地圖物品過濾資料。

假如我沒有excel怎麼辦? 改回用普通文字檔就可以,只需修write2file的第3,10行就可以。

    open(FILE, ">>:utf8", "$Settings::logs_folder/partyitem.txt");
    my $log = "$time\t$name\t$cate\t$desc\n";                           

修改後partyitem.txt內容如下,\tperl語言是tab分隔,\n是換行。

    2013-04-05 18:44:45 1@tower23   隊員A 變形長靴
    2013-04-05 18:44:53 1@tower23   隊員B 血斧
    2013-04-05 18:44:55 1@tower55   隊員A 獸人英雄卡片

Comments