Use of uninitialized value问题

Use of uninitialized value问题

代码大致如下:
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
foreach什么?
function 返回了 undef,还是整理一下思路吧。
我是不想搞的太复杂,简写了,我把整个代码写清楚吧
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";
perldoc Win32::DriveInfo
看 DriveSpace 什么情况下返回的列表中第 7 个元素是 undef。

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


QUOTE:
原帖由 放驴娃 于 2007-12-25 13:22 发表
perldoc Win32:riveInfo
看 DriveSpace 什么情况下返回的列表中第 7 个元素是 undef。

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

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


QUOTE:
原帖由 放驴娃 于 2007-12-25 13:48 发表
读书去吧!