由于不懂编程,一直都是参照其它文件来修改的.最近想改个LEOBBS的插件,遇到了下面的问题,请指导一下:
elsif($temp_sd eq '4')
{
my $filetoopen = "$lbdir" . "postluck/namelist.txt";
open(FILE,"$filetoopen");
my @namelist=<FILE>;
$namelist1 = @namelist ;
close(FILE);
$namelist1 = int(rand($namelist1));
$rob = "@namelist[$namelist1]"; #我是想在namelist.txt里随机选取一个用户名
if ($rob eq $inmembername) { #我想判断抢跟被抢的人是否是同一个,是的话就不能
$nameck = 1 抢. 但这句好像一直无效,从没有显示过"测试成功",
}else{ 即使是同一个人也是显示" A被A抢".
$nameck = 2}
if ($nameck eq 1) {
$messaged = "<font color=RED>测试成功";
}else{
$messaged = "<font color=RED> $rob 被$inmembername 抢!";
}
}
想得我头晕...拜拖了!谢谢!
1。要用 $nameck = 1;请选择 if ($nameck == 1) {
或者你选择用 $nameck = '1'; 后面才可以用 eq '1';
2.你的$nameck = 1 和 $nameck = 2 后面请加上 分号。
3。 你也许需要对用户名字大小写,特殊符号进行过滤,然后比较是否相同。可以参考leobbsx的其他代码。
还是不行喔
是不是$rob的值跟$inmembername的值的性质不同,然后无法比较?
my @namelist=<FILE>; 把 my 去掉。
elsif($temp_sd eq '6')
{
my @namelist = (sky1,sky2);
$rob = $namelist[rand (@namelist)];
# 若改成$rob = @namelist[rand(@namelist)];就会一直是"测试成功...",有时明明是"测试成功 sky1 sky1",即$rob跟$membername是相同的.请问它们在性质上是不是有什么不同?
$membername =~ s/ /\_/g;
$membername =~ tr/A-Z/a-z/;
$rob =~ s/ /\_/g;
$rob =~ tr/A-Z/a-z/;
if ($rob eq $membername) {
$messaged = "<font color=RED>什么东东?$membername 被 $rob抢!";
}else{$messaged = "<font color=RED>测试成功$rob $membername";}
}
发现改成上面那样就可以用了.但如果在txt文档里随机选取一个用户名就不行,
不知道是不是从txt文档里选取出来的值无法跟$membername比较
谢谢路杨老前辈的指点!呵呵