- 论坛徽章:
- 0
|
标题取得不好,具体情况大家看了内容就知晓了。
我在win32里用activeperl。
我的一个修改cgi代码的脚本:add_header.pl
- #!C:/Perl/bin/perl
- use strict;
- use warnings;
- my $FILE = shift;
- open(FH, "+<", $FILE) or die "Opening: $!";
- my @ARRAY =
- grep { ! /^#!/ and ! /^use strict;/ and ! /^use warnings;/ and ! /^use CGI/ }
- <FH>;
- # change ARRAY here
- seek(FH,0,0) or die "Seeking: $!";
- map { print FH }
- <DATA>;
- print FH @ARRAY;
- truncate(FH,tell(FH)) or die "Truncating: $!";
- close(FH)
- __END__
- #!C:/Perl/bin/perl
- use strict;
- use warnings;
- use CGI qw( :standard );
复制代码
某个目标cgi脚本为target.pl:
- #!C:/Perl/bin/perl
- use strict;
- use warnings;
- use CGI qw( :standard );
- open (LOG, ">>D:/htdocs/errors.log")
- or die "Couldn't open log file: $!";
- carpout(LOG);
复制代码
以上两个脚本都是unix格式的。
执行perl add_header.pl target.pl后,target.pl就变成了dos格式了。
我是在vim里编辑的,修改后的target.pl里出现很多的“^M”。
我把add_header.pl作如下修改后,就没有这种意外了:
- #!C:/Perl/bin/perl
- use strict;
- use warnings;
- my $FILE = shift;
- open(FH, "+<", $FILE) or die "Opening: $!";
- my @ARRAY =
- grep { ! /^#!/ and ! /^use strict;/ and ! /^use warnings;/ and ! /^use CGI/ }
- <FH>;
- # change ARRAY here
- seek(FH,0,0) or die "Seeking: $!";
- map { chomp; print FH $_."\n" }
- <DATA>;
- map { chomp; print FH $_."\n" }
- @ARRAY;
- truncate(FH,tell(FH)) or die "Truncating: $!";
- close(FH)
- __END__
- #!C:/Perl/bin/perl
- use strict;
- use warnings;
- use CGI qw( :standard );
复制代码
这是什么原因啊?是perl的问题,还是vim的问题? |
|