我的代码是在Win2000下写的,目的是检查空闲磁盘空间大小,考虑到将来应用到Linux下,故考虑了可移植性:
我的代码如下:
- #!/usr/bin/perl
- sub freespace{
- my(@dir,$free);
- if($^O eq 'MSWin32'){
- @dir=`dir`;
-
- $free=$dir[$#dir];
- print $free;
- my $pat="可用字节";
- $free=~s/(\s+)([\d,]+).*([\d,]+)(\s+)$pat/$3/;
- print $free;
- $free=~s/,//g;
- }elsif($^O eq 'linux'){
- @dir=`df -k .`;
- $free=(split(/\s+/,$dir[$#dir]))[3];
- $free=$free*1024;
- }else{
- $free=0;
- warn "Cannot determine free space on this machine.\n";
- }
- return $free;
- }
- my $free=freespace();
- print $free;
复制代码
但在win2000下运行只取出了空闲空间的最后一个数字
如 :
5 个目录 1,280,499,712 可用字节
结果程序只输出2,
请问各位高手错在那里?我得正则表达式写的正确么? |