免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Perl help me !
最近访问板块 发新帖
查看: 3206 | 回复: 9

help me ! [复制链接]

论坛徽章:
0
发表于 2003-02-20 16:32 |显示全部楼层
pm文件中和普通pl文件中读写文件有什么区别吗?

论坛徽章:
0
发表于 2003-02-20 16:36 |显示全部楼层

help me !

sub sendpackage
{
$name= "zdfaaa";
$password = "123";
$sts = rand();
$Time = pack ("a8",$sts);
$SCode = pack("x1",0);
$PType = pack("a1","R";
$PNum = pack("s",1);
$PSeq = pack("s",1);
$RCount = pack("s",0);
$CCount = pack("s",0);
$Reserved = pack("x8",0);                                                                                                              
$UserId = pack("a17","$name";
$Param = pack("a400","select * from UserInf where UserId='$name' and LoginMm='$password'";
$DataSet = pack("x3589",0);
open (FILE,">;/dev/ppc405_c_conf" or die "Open file for write error!\n";
{
   print FILE $Time;
   print FILE $SCode;
   print FILE $PType;
   print FILE $PNum;
   print FILE $PSeq;
   print FILE $RCount;
   print FILE $CCount;
   print FILE $Reserved;
   print FILE $UserId;
   print FILE $Param;
   print FILE $DataSet;
}
close FILE;
}

这是我的pm模块中的写文件部分. 这段代码不用pm,放在主程序里面一点问题没有,但是一放到pm文件中,就写不了文件,这是怎么回事呢?

论坛徽章:
0
发表于 2003-02-20 17:13 |显示全部楼层

help me !

pm需要一个真返回值,一般在pm最后加一行:
1;

论坛徽章:
0
发表于 2003-02-20 17:58 |显示全部楼层

help me !

我加了..但是还是不行,,打开文件都没问题,就是print 那里不知道怎么回事..艾.

论坛徽章:
0
发表于 2003-02-20 18:17 |显示全部楼层

help me !

主要是 package 与 pl 文件有些不一样,一是 pm 文件会有 name space 名称空间,而 pl 只是简单的 include ,是在同一名称空间下的

论坛徽章:
0
发表于 2003-02-20 18:22 |显示全部楼层

help me !

你的 PM 应该这样 ,与调用的脚本放在同一目录下
package yourpm;

sub sendpackage
{
.....

};

1;

使用应该这样

use yourpm;

&yourpm::sendpackage();

论坛徽章:
0
发表于 2003-02-20 19:13 |显示全部楼层

help me !

对不起,上面的 包引用应该推荐使用 require , 并且文件名应该写为 yourpm.pl 这样的形式,不推荐使用 use 与 yourpm.pm 文件名。

因为,Perl 推荐使用 OO 编程的 perl package 模块使用 YourPm.pm 这样的文件形式,使用 use YourPm; 这样的调用格式.

而作为包,使用 require 旧格式以示区分。

论坛徽章:
0
发表于 2003-02-20 19:20 |显示全部楼层

help me !

包的使用例子


package yourpm;
#文件名 yourpm.pl

sub yoursub { print "hello"; }

1;

调用  
#!/usr/bin/perl
#文件名 main.pl

require "yourpm.pl";

yourpm::yoursub();



模块的使用例子

package YourPm;
#文件名 YourPm.pm   注意大小写

BEGIN {
use Exporter();
@ISA = qw(Exporter);
@EXPORT = qw(&yoursub};
}

sub yoursub { print "hello";}

1;

调用
#!/usr/bin/perl
#文件名 main.pl

use YourPm;

yoursub();

论坛徽章:
0
发表于 2003-02-20 20:24 |显示全部楼层

help me !

非常感谢..我没用require...明天上班我在去试试 在此感谢!~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-02-21 04:17 |显示全部楼层

help me !

一万个感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP