linux:perl:剪贴板分析工时
这是本文档旧的修订版!
perl剪贴板分析工时
主要涉及剪贴板问题,有可能复制下来是中文乱码的原因,需要在复制内容时切换为中文键盘。
#!/usr/bin/perl use utf8; use Win32::Clipboard; #use Clipboard; use Encode; $val = Win32::Clipboard::GetText(); #$val = Clipboard::paste(); $val = decode("gbk", $val); #$val = decode("utf8", $val); $tmp_file = "_ana_work_time_clip.txt"; $t = 0; $weekday = 6; @weekstrar = ("ERROR", "周一","周二","周三","周四","周五","周六","周日"); $yymm = "----"; $start_match = 0; $worktime_valid = 0; $jiejiari = ""; while ($line = <fh>) { #print "line = $line\n"; if ($line =~ /^\s*(\d+)\s*年\s*(\d+)\s*月/) { $yymm = "$1-$2"; } elsif ($line =~ /周[日一二三四五六]/) { $start_match = 1; } elsif($start_match == 0) { next; } elsif ($line =~ /^\s*(\d+)\s*$/) { $day = $1; #print "$day vs $weekday \n"; $weekday = $weekday + 1; # first weekday is 7 Sunday if ($weekday == 8) { $weekday = 1; } if ($worktime_valid == 1) { if ($jiejiari ne "") { } else { } } $worktime_valid = 0; $jiejiari = ""; } elsif ($line =~ /(\d+):(\d+)\s*-\s*(\d+):(\d+)/) { $d1 = $1; $d2 = $2; $d3 = $3; $d4 = $4; if ($weekday >=1 && $weekday <=5) { $m = ($d3-$d1)*60 + ($d4-$d2) - 60*9; $h = 0; if ($half_h >= 4) { $h = $half_h/2; } } elsif ($weekday >=6 && $weekday <=7) { $m = ($d3-$d1)*60 + ($d4-$d2); $h = 0; if ($half_h >= 8) { $h = $half_h/2; } } $t = $t + $h; $weekstr = $weekstrar[$weekday]; #$weekstr = $weekday; $worktime_valid = 1; } elsif ($line =~ /(.*)/) { $jiejiari = $1; } }
linux/perl/剪贴板分析工时.1645581803.txt.gz · 最后更改: 2023/03/17 10:12 (外部编辑)