0

以下は、私が実行している 2 つのファイルの内容です:
Secure.cgi MyModule.pm

MyModule.pm の「サブ スクラブ{}」サブルーチンは Secure.cgi のサブルーチンでしたが、代わりに別のモジュールとして実行したかったのです。

Secure.cgi のサブルーチンとして、「サブ スクラブ」は完全に機能しましたが、MyModule.pm に移動したときに機能しませんでした。これは間違いなく、間違って呼び出しており、おそらくモジュールにエラーがあるためです。

これは、モジュールを作成する最初の試みです。MyModule.pm でテストしたところ、「印刷」機能は正常に動作するので、正しくインストールされていることがわかります。

良いフィードバックをいただければ幸いです。

SECURE.CGI
#!/usr/bin/perl

use MyModule;

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

### DATA VALIDATION IN MYMODULE.PM IS NOT OCCURRING#######  
$value = MyModule->scrub;
##########################################################

##### THIS WORKED WHEN "SCRUB" WAS EMBEDDED IN THIS SCRIPT #######  
##&scrub;

$userdata{$name} = $value;
}

$id1=$userdata{id1};
$id2=$userdata{id2};

print "Content-type:text/html\r\n\r\n";
print" 
<BR>
<Table align=center width=1000 border=1 cellpadding=4 cellspacing=0>
<TR><TD align=center>
<form action=\"http://###myserver###\" method=post>
<table border=1 bgcolor=#EAEAEA>
<TR><TD align=center colspan=3><B>Input Form</b></td></tr>
<TR><TD align=center><b>ID1</b><BR><input type=text name=id1></td></tr>
<TD align=center><b>ID2</b><BR><input type=text name=id2></td></tr>
<TD align=center><input type=submit value=submit name=submit></td></tr>
</table>
</form>
<BR>
<table border=1 bgcolor=#EAEAEA >
<TR><TD align=center><B>Form Output</b></td></tr>
<TR><TD align=center><b>ID1</b></td></tr>
<TR><TD bgcolor=white align=center>&nbsp;  $id1</td></tr>
<TR><TD align=center><b>ID2</b></td></tr>
<TR><TD bgcolor=white align=center>&nbsp;  $id2</td></tr>
</table>

</TD></TR></table>
<BR>
</body>  </html>"; 
=======================================

MYMODULE.PM
package MyModule;

sub scrub {
$value =~ s/.html|.htm|.cgi|.php//g;    
$value =~ s/\///g;
$value =~ s/&|$|@|'|"|<|>|\^|\(|\)|=//g;
$value =~ s/onmouseup|onreset|onselect|onsubmit|onunload//g;    
return $value;
}
1;
4

1 に答える 1