バッテリーレベルを調べるスクリプト
どうも最近、バッテリーが50%あたりから5%あたりまで一気に減るので、
しばらく計ってみることにする。が、手頃なものが見つけられないので。
#!/usr/bin/perl use strict; use Win32::API; if($ARGV[0] eq '--loop') { $| = 1; while(1) { get_battery_info(); sleep(60); } } else { get_battery_info(); } sub get_battery_info { my $getInfo = new Win32::API("kernel32", "GetSystemPowerStatus", 'P', ''); my $data = ' ' x 12; $getInfo->Call($data); my($ac, $bf, $blp, $xx) = unpack('C*', substr($data, 0, 4)); my %ac = (0=>'OK', 1=>'NG'); $ac = $ac{$ac} || '?'; my @bf_str = qw(High Low Critical Charging x x x NoBattery); my @bf_dat = unpack('B8', $bf); $bf = join(' ', map {$bf_dat[$_]?$bf_str[$_]:''} (0 .. 7)); my @now = localtime(); printf("%04u-%02u-%02u %02u:%02u:%02u ", 1900+$now[5], 1+$now[4], @now[3,2,1,0]); print "AC: $ac\tBat: $bf\tBatLife: $blp %\n"; }