HTML пост Perl скрипт в текстовый файл

0

У меня есть Perl-скрипт (я его не писал), который берет POST с html-страницы и отображает определенный раздел файла txt на веб-странице. Проблема в том, что теперь мне это нужно, чтобы также сделать текстовый файл этого раздела в текстовый файл на нашем Unix-сервере. Любая помощь? Код ниже.

#!/usr/bin/perl
#
print "Content-type: text/html\n\n";
print '<pre>';
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
#print "$buf\n";
#print "$REMOTE_USER = $REMOTE_USER\n";
@pairs = split(/&/, $buf);
#print "$pairs\n";
($txt_HRcode, $lc_HRcode) = split(/=/,$pairs[0]);
#print "$txt_HRcode\n";

#$HRcode = " HRcode:  E2PSYAA0";
$HRcode = " HRcode:  F8".uc($lc_HRcode)."0";
#print "$HRcode\n"; 

open(LINEFIND, "grep -n \"$HRcode\" /release/ucpmr/ucpmr.txt |") or die print "Can't Open File" ;
$line_num = <LINEFIND>;
#print "$line_num\n";
#if($line_num !~ m/$HRcode/) {print "SEQUENCE CODE NOT FOUND"; die()};
($sline, $hrd, $lin_text) = split(/:/, $line_num);
$beg_line = ($sline - 2);
$end_line = ($beg_line + 10000);
#print "$beg_line\n";
#print "$end_line\n";
close(LINEFIND);

open(DISP, "/release/ucpmr/ucpmr.txt") or die print "File is no longer in History. Press Back to Return";
for($incr=1; $incr <= $end_line; $incr +=1)
{$line = <DISP>;
    if($incr > $beg_line) {
    if($incr >$sline){ 
        if($line =~ m/HRcode:  F8/){
        if($line !~ m/$HRcode/) {$quit_line =  $incr-3 ; last;

close(DISP);}}}}}

open(PRINTFIND, "/release/ucpmr/ucpmr.txt") or die print "File is no longer in History. Press Back to Return";
for($incr=1; $incr <= $quit_line; $incr +=1)
{$line = <PRINTFIND>;
#$line =~ s/\d\d\d-\d\d-/XXX-XX-/;
    if($incr > $beg_line) {print"$line";}}
#print "quit line is : $quit_line\n";

print "</pre>";
  • 1
    Не очень понятно, что вы хотите сделать. Вы хотите сохранить что-то в текстовом файле? На том же сервере, где это работает? В любом случае, это ужасный сценарий. Вам лучше переписать это красиво на вашем любимом языке.
  • 0
    Да, это часть "Другие обязанности, как назначено". И программист, который написал это, давно ушел. Но в основном это отображает определенную часть текстового файла на веб-странице. Мне также нужно поместить его в текстовый файл в этом каталоге / release / ucpmr /. Любая помощь будет принята с благодарностью.
Теги:

2 ответа

1
Лучший ответ

Измените конечную часть, начиная с open(PRINTFIND,... следующим образом:

open(PRINTFIND, "/release/ucpmr/ucpmr.txt") or die print "File is no longer in History. Press Back to Return";
open(my $fh, '>/release/ucpmr/TEXT_FILE_NAME.txt');
for($incr=1; $incr <= $quit_line; $incr +=1)
{$line = <PRINTFIND>;
#$line =~ s/\d\d\d-\d\d-/XXX-XX-/;
    if($incr > $beg_line) {print"$line"; print $fh $line; }}
#print "quit line is : $quit_line\n";

print "</pre>";

... но чувак, если вы парень.NET, сделайте себе одолжение и перепишите этот беспорядок в.NET, серьезно...

  • 0
    Я получаю ошибки GLOB (0x4002662c) и ничего не записывается в файл? Не уверен что происходит.
  • 0
    @ user3092474 ах я ошибся. В print $fh $line; не должно быть запятой print $fh $line; там.
Показать ещё 1 комментарий
0
open(my $fh, '>', '/release/ucpmr/TEXT_FILE_NAME.txt');
print $fh FILE_CONTENT;
close $fh;

как это?

  • 0
    Я парень .NET, поэтому, пожалуйста, держитесь со мной, я поставлю это в конце сценария?
  • 0
    да поставь в конце сценария. замените TEXT_FILE_NAME именем текстового файла, который вы хотите вывести, и замените FILE_CONTENT любой переменной или содержимым, которое вы хотите распечатать в файл. 3-я строка закрывает файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню