1 #为了使在子例程中传递文件句柄不出问题 2 #我们要把文件句柄转为glob或typeglob 3 4 5 #转为glob 6 $fd = *MY_FILE; 7 8 #转为typeblog 9 $fd = *MY_FILE; 10 11 #两种形式都行, 但*MY_FILE更安全, 一般都用这个形式 12 13 14 15 #传递给子程序 16 hello(*MY_FILE); 17 18 #从子程序返回 19 sub get_fd(){ 20 open FILE, "readme.txt"; 21 return *FILE; 22 } 23 24 #fileno()函数可以检测一个变量是否是一个有效的文件句柄 25 #成功时返回文件描述符(一般是大于3, STDIN(0), STDOUT(1), STDERR(3)) 26 #当检测到不是文件句柄时返回undef; 27 die "Not a filehandle" unless(fileno($fh));