URN Logo
UNIX Resources » Linux » China Linux Forum » Perl 编 程 » 3 » 关于这个出错信息:Use of uninitialized value
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
关于这个出错信息:Use of uninitialized value
 
 
 
Subject: 关于这个出错信息:Use of uninitialized value
Author: hosine    Posted: 2004-11-30 14:43    Length: 1,730 byte(s)
[Original] [Print] [Top]
我是Perl的新手,也许问题有点菜,请各位体谅

我有这么一个段的程序,功能就是从excel中统计每个人的旅游费用(excel中:name cost describe)
#! /usr/bin/perl -w
use strict;
use OLE;
my @files = @ARGV;
my $app = CreateObject OLE"Excel.Application" || die "Couldn't open Excel ";
my ($file, $counter, $person,%expenses);
foreach $file (@files)
{
my $book = $app->Workbooks->Open("D:\perlab\simpleModel\$file");
my $sheet = $book->Worksheets(1);
my $done = 0;
$counter = 1;
#my ($expense,$reason);
while( ! $done)
{

my ($person, $expense, $reason) = ($sheet->Range("A$counter")->{'Value'},
$sheet->Range("B$counter")->{'Value'},
$sheet->Range("C$counter")->{'Value'});
if($reason =~ m"travel"i)
{
$expenses{$person} += $expense;
}
if(! $person && ! $expense && !$reason)
{
$done =1;
}
$counter++;
}
$app->Workbooks->Close($file);
}
$app->Quit();
运行后,提示能得到结果,但同时也提示:
Use of uninitialized value in pattern match (m//) at D:/perlab/simpleModel/excell.pl line 20.

20行是:if($reason =~ m"travel"i)
我不明白为什么会有此错误??
P.S. 在my ($person, $expense, $reason)中,$person算不算被重定义,怎么提示有错?
----
我想做个出色的贼,偷去我心爱女人的心^_^
[Original] [Print] [Top]
Subject: Re: 关于这个出错信息:Use of uninitialized value
Author: youzhiqingnian    Posted: 2004-11-30 22:12    Length: 566 byte(s)
[Original] [Print] [Top]
这个提示是由perl的 -w 开关打开的,原因是该变量没
有初始化,也就是

$sheet->Range("C$counter")->{'Value'}) 的值为空。

这只是一个警告,不影响程序的运行,如果你觉得警告
信息多余可以去掉程序一开始的 -w 开关。

同一个变量名在同一个范围内只能用my定义一次,所
以以下两行有冲突,第一行必须注释掉:

#my ($expense,$reason);
........
my ($person, $expense, $reason) = ($sheet->Range("A$counter")->{'Value'},
[Original] [Print] [Top]
Subject: Re: 关于这个出错信息:Use of uninitialized value
Author: wiwj    Posted: 2004-12-07 13:58    Length: 44 byte(s)
[Original] [Print] [Top]
可以先用 exists 检查一下hash的成员是否存在。
[Original] [Print] [Top]
« Previous thread
请教
Perl 编 程
3
Next thread »
perl网络编程(English version)下载
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:08:58, cost 0.037619829177856 ms.