このスレッドは解決済です(未解決に戻す場合はこちら)
<<戻る

perlの文法 このメッセージに返信する
日時: 2011/06/13 01:13
名前: ラドクリフ
URL:
perlを作成しているのですが、以下のようなエラーが出てしまいます。
Can't find string terminator "EOF" anywhere before EOF at resist.cgi line 17.

EOFの終端は入れてあるのですが、エラーになってしまいます。
検索でtabがはいっているとかあったのですが、はずすと別の箇所がエラーとなってしまいます。
宜しくお願いします。

print <<"EOF";
<table border="0" cellspacing="1" cellpadding="20" bgcolor="#000000">
<tr>
<td bgcolor="#FFFFFF">ユーザー名</td>
<td bgcolor="#FFFFFF" width="200">
<font color="red">$ACCOUNT は既に登録済みです。</font>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">パスワード</td>
<td bgcolor="#FFFFFF" width="200">$PASSWORD</td>
</tr>
</table>
<br>
<input type="button" value="戻る" onClick="history.back()">

EOF
exit (0);
記事編集 編集
Re: perlの文法 このメッセージに返信する
日時: 2011/06/13 08:49
名前: stranger
URL: http://ja.528p.com/
どのように実行されましたか

上記の文をregist.cgiで保存して
端末で
perl regist.cgi
を実行したら
EOF間の文字が表示されましたけど?


apacheのCGIとして実行するなら

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print <<"EOF";
<html>
<body>
<table border="0" cellspacing="1" cellpadding="20" bgcolor="#000000">
<tr>
<td bgcolor="#FFFFFF">ユーザー名</td>
<td bgcolor="#FFFFFF" width="200">
<font color="red">$ACCOUNT は既に登録済みです。</font>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">パスワード</td>
<td bgcolor="#FFFFFF" width="200">$PASSWORD</td>
</tr>
</table>
<br>
<input type="button" value="戻る" onClick="history.back()">
</body>
</html>

EOF
exit (0);

Shift_JISを使っているなら
print "Content-type: text/html; charset=Shift_JIS\n\n";
のようにcharsetを指定してみる
記事編集 編集
Re: perlの文法 このメッセージに返信する
日時: 2011/06/13 19:04
名前: ラドクリフ
URL:
>どのように実行されましたか
>
>上記の文をregist.cgiで保存して
>端末で
>perl regist.cgi
>を実行したら
>EOF間の文字が表示されましたけど?
>
>
WEB上から実行しています。

>apacheのCGIとして実行するなら
>
>#!/usr/bin/perl
>print "Content-Type: text/html\n\n";
>print <<"EOF";
><html>
><body>
><table border="0" cellspacing="1" cellpadding="20" bgcolor="#000000">
><tr>
><td bgcolor="#FFFFFF">ユーザー名</td>
><td bgcolor="#FFFFFF" width="200">
><font color="red">$ACCOUNT は既に登録済みです。</font>
></td>
></tr>
><tr>
><td bgcolor="#FFFFFF">パスワード</td>
><td bgcolor="#FFFFFF" width="200">$PASSWORD</td>
></tr>
></table>
><br>
><input type="button" value="戻る" onClick="history.back()">
></body>
></html>
>
>EOF
>exit (0);
>
>Shift_JISを使っているなら
>print "Content-type: text/html; charset=Shift_JIS\n\n";
>のようにcharsetを指定してみる
>

上記のとおりにしましたら、できました。

この処理をファイルに出力して、そのファイルからユーザーのパスワードを変更をするにはどうすればいいでしょうか?


$buf = system("/usr/sbin/chpasswd < ".$aPATH."uplist.dat");
if ($buf != 0){
print "can not change passwords.\n";
exit;
}
$buf = system("/bin/cat /dev/null > ".$aPATH."uplist.dat");
if ($buf != 0){
print "can not remove passwords list.\n";
exit;
}

これをコレを実行すると、以下のエラーが出ます。
chpasswd: 1 行: 1行が長過ぎます
chpasswd: エラーが検出されました, 変更は無効になりました

uplist.datに入っているデータは以下です
test:1234
test:1234
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -