为什么打印一个数组行,打印一个元素就不行呢?

为什么打印一个数组行,打印一个元素就不行呢?

use Win32::Registry;
my $reg_obj;
my @keys;
# $reg_obj->GetKeys(\@keys);
my $tips;
$::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\ORACLE", $reg_obj)
    or die "不能打开注册表项: $^E";
$reg_obj->GetKeys(\@keys);
print ((join "\t",@keys), "\n");

输出
KEY_OraClient10g_home1  KEY_OraDb10g_home1      SYSMAN

use Win32::Registry;
my $reg_obj;
my @keys;
# $reg_obj->GetKeys(\@keys);
my $tips;
$::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\ORACLE", $reg_obj)
    or die "不能打开注册表项: $^E";
$reg_obj->GetKeys(\@keys);
print "$key[0]\n";

啥也输出不了!!
少了个s, $key  => $keys
"$key[0]\n"?
"$keys[0]\n"?
use strict; use warnings


QUOTE:
原帖由 nkcsx 于 2007-9-14 09:40 发表
少了个s, $key  => $keys

这几天忙糊涂了,休息不好真不行啊,谢谢朋友提醒!自己死活看不出自己的问题了,迷糊了!
顺便请教一下大家:$^E是啥意思啊?那是我在perl帮助里拷贝出的代码


QUOTE:
原帖由 zhouhaiming 于 2007-9-14 10:02 发表

这几天忙糊涂了,休息不好真不行啊,谢谢朋友提醒!自己死活看不出自己的问题了,迷糊了!

记住~~~~~~~~~~~~~

QUOTE:
use strict; use warnings; #That's necessary

至少不会让你花费N久去查找一个小s
$EXTENDED_OS_ERROR

    $^E     同当前操作系统相关的错误信息。目前该变量仅在 VMS、OS/2 和 Win32

            (以及 MacPerl)下同 $! 有所不同。在所有其他平台上,$^E 总是和 $!

            一样。



            在 VMS 系统下,$^E 是最近一次系统错误的 VMS 状态值。这比 $!

            提供的关于系统错误的信息更为详尽。当 $! 被设置成 EVMSERR 时

            该变量尤为重要。



            在 OS/2 系统下,$^E 被设置为最近一次通过 CRT 或直接通过 Perl

            进行的 OS/2 API 调用所返回的错误代码。



            在 Win32 下,$^E 总是返回由 Win32 调用 "GetLastError()" 所报告

            的错误信息,它描述的是发生在 Win32 API 内部的最近一次错误。多数

            特定于 Win32 的程序代码会通过 $^E 报告错误,而 ANSI C 及类 Unix

            调用则会设置 "errno",因此大部分可移植的 Perl 代码都通过 $!

            报告错误。



            在 $! 的描述中提到的警告一般也适用于

            $^E。(助记:额外的错误解释。)

            (译注:英文中“额外”的单词为“Extra”。)



            另见 错误指示器。

恩,偶也学习了
记住了保持良好的编程习惯!