免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5306 | 回复: 7
打印 上一主题 下一主题

Use of uninitialized value问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-25 11:21 |只看该作者 |倒序浏览
代码大致如下:
use strict;
use warnings;

my $total = 0;
foreach ()
{
   my $temp=function($_); #接收一个函数的返回值

   
   $total += $temp;
}

print "$total";


运行的时候提示警告:
Use of uninitialized value in addition (+) at.....
就是$total += $temp那一行

请问要怎么改才能不出现这个警告?不要告诉我是注释use warning:wink:

论坛徽章:
0
2 [报告]
发表于 2007-12-25 12:15 |只看该作者
foreach什么?

论坛徽章:
0
3 [报告]
发表于 2007-12-25 13:02 |只看该作者
function 返回了 undef,还是整理一下思路吧。

论坛徽章:
0
4 [报告]
发表于 2007-12-25 13:07 |只看该作者
我是不想搞的太复杂,简写了,我把整个代码写清楚吧:wink:
use strict;
use warnings;
use Win32::DriveInfo;

my @Drives = Win32::DriveInfo::DrivesInUse();
my $total = 0;
foreach (@Drives)
{
    my ($SectorsPerCluster,
    $BytesPerSector,
    $NumberOfFreeClusters,
    $TotalNumberOfClusters,
    $FreeBytesAvailableToCaller,
    $TotalNumberOfBytes,
    $TotalNumberOfFreeBytes) = Win32::DriveInfo::DriveSpace($_);
    
    $total += $TotalNumberOfBytes;
}
print "$total";

论坛徽章:
0
5 [报告]
发表于 2007-12-25 13:22 |只看该作者
perldoc Win32::DriveInfo
看 DriveSpace 什么情况下返回的列表中第 7 个元素是 undef。

一个简单的解决办法是,把
$total += $TotalNumberOfBytes;
改成
$total += $TotalNumberOfBytes || 0;

论坛徽章:
0
6 [报告]
发表于 2007-12-25 13:40 |只看该作者
原帖由 放驴娃 于 2007-12-25 13:22 发表
perldoc Win32:riveInfo
看 DriveSpace 什么情况下返回的列表中第 7 个元素是 undef。

一个简单的解决办法是,把
$total += $TotalNumberOfBytes;
改成
$total += $TotalNumberOfBytes || 0;


Thanks!
我看了perldoc,上面没说明,只说了返回值的意思
请问$total += $TotalNumberOfBytes || 0;是什么意思?是什么用法?

论坛徽章:
0
7 [报告]
发表于 2007-12-25 13:48 |只看该作者
读书去吧!

论坛徽章:
0
8 [报告]
发表于 2007-12-25 13:53 |只看该作者
原帖由 放驴娃 于 2007-12-25 13:48 发表
读书去吧!

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP