我不好意思问,太简单了在线等待,马上给分
要修改一个文件,我把文件读入到一个标量中(该文件只有一行如linux:unix:)现在想把unix改为perl我要怎样做。给我一个例子. 问题点数:50、回复次数:7Top
1 楼yourway(勵磁繞組,還未娶妻(至少我曾經瘦過))回复于 2002-04-23 11:31:21 得分 10
#! /usr/bin/perl
$open_file="";
$find='unix';
$replace='perl';
open(FILE,"<$open_file") or die $!;
my $file_content;
while(<FILE>){
$file_content .=$_;
}
close(FILE);
$file_content=~s/$find/$replace/ge;
open(FILE,">$open_file") or die $!;
print FILE $file_content;
close(FILE);
Top
2 楼tanghui21(说话是我的职业)回复于 2002-04-23 11:32:07 得分 10
用split函数 请参看有关资料Top
3 楼bin127(温柔一刀)回复于 2002-04-24 11:39:17 得分 0
我按yourway(勵磁繞組)的说法做了一个程序,但是它有问题
#!/usr/bin/perl -w
use CGI qw(:standard);
print header;
$open_file = "/var/www/cgi-bin/passwd";
$olduser = param('olduser');
$oldpasswd = param('oldpasswd');
$newpasswd = param('newpasswd');
$newpasswd = param('newpasswd1');
chomp $olduser;
chomp $oldpasswd;
chomp $newpasswd;
chomp $newpasswd1;
if ($olduser eq "") {print "no!\n";}
if ($oldpasswd eq "") {print "no!\n";}
if ($newpasswd eq "") {print "no!\n";}
if ($newpasswd eq "") {print "no!\n";exit;}
if ($newpasswd ne $newpasswd1) {print "no!\n";exit;}
$oldcrypt = crypt($oldpasswd,"ss");
$newcrypt = crypt($newpasswd,"ss");
open(FILE,"<$open_file") || die $!;
$file_content = <FILE>;
close(FILE);
@file_content=split(/:/,$file_content);
if (($olduser ne $file_content[0]) || ($oldcrypt ne $file_content[1])) {
print "你没有这个权限修改!\n";exit;}
$file_content[1]="$newcrypt";
open(NEWFILE,">$open_file") || die $!;
print NEWFILE @file_content;
close(NEWFILE);
密码文件只有一行 (administrator:ss95dd18Dklk)
在这个程序中if ($newpasswd ne $newpasswd1) {print "no!\n";exit;}这句不能执行,不知是什么原因,在这句后面的语句也不能执行,那位高人帮我看一下吧,谢谢.Top
4 楼yourway(勵磁繞組,還未娶妻(至少我曾經瘦過))回复于 2002-04-24 11:54:44 得分 10
……
$newpasswd = param('newpasswd');
$newpasswd = param('newpasswd1'); #这一句啦!
chomp $olduser;
……Top
5 楼netken(小肯)回复于 2002-04-24 12:56:14 得分 10
猜想 newpasswd , newpasswd1 应该是确认密码输入用的吧?
那么在判断的时候最好是在 html 中用 javascript 来判断,或者在后面的你的一连串的 if if if 语句中做些修改,不要那么多的 if ,一个就可以了
if ( $olduser eq '' or $oldpasswd eq '' or $newpasswd ne $newpasswd1 or $newpasswd eq '' ) {
# do something
}
另,最后在 $file_content = <FILE>; 后面加上 chomp $file_content;
Top
6 楼icuc88(职业特种兵)回复于 2002-04-24 19:26:48 得分 10
$newpasswd = param('newpasswd');
$newpasswd = param('newpasswd1'); --> BUG
chomp $olduser;
Top
7 楼bin127(温柔一刀)回复于 2002-04-24 20:11:06 得分 0
谢谢了,我已搞定,就是打错了,马上给分。Top




