хотите распечатать в консоли в качестве вывода - PullRequest
0 голосов
/ 06 января 2020

Это мой пример кода. Я хочу напечатать отчет в консоли в качестве вывода, я пробовал слишком много раз, но я не смог этого сделать, новый ученик.

#!/usr/local/bin/perl

# for loop execution
$b=0;
for( $a = 0; $a < 5; $a = $a + 1 ) {

   print "Enter your name please" ;
   my $name = <STDIN>;
   chomp $name;
   open(my $name, '>', 'report.txt');
   close $name;

}

Ответы [ 4 ]

2 голосов
/ 06 января 2020
my $qfn = 'report.txt';

open(my $fh, '<', $qfn)
   or die("Can't open \"$qfn\": $!\n");

while (<$fh>) {
   print;
}

Последние три строки эквивалентны

while ($_ = <$fh>) {
   print($_);
}

Так что вы также можете использовать

while (my $line = <$fh>) {
   print($line);
}
1 голос
/ 06 января 2020

Этот ответ относится к случаю, если OP хочет реализовать функцию perl, предоставляемую командой tee Linux / UNIX. Страница man tee .

Перед использованием скрипта его необходимо сделать исполняемым chmod +x script.pl.

Команда продолжит печатать в терминал и сохранить тот же вывод в файл с предоставленным filename или другим файлом по умолчанию report.txt .

ИСПОЛЬЗОВАНИЕ: command | script.pl [filename]

ПРИМЕЧАНИЕ: старый файл перезаписывается

#!/usr/local/bin/perl

use strict;
use warnings;

use feature 'say';

my $report = shift || 'report.txt';

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( <> ){
    say;
    say $fh $_;
}

close $fh;
1 голос
/ 06 января 2020

Судя по предоставленному фрагменту кода, который вы читаете из STDIN и выводите в report.txt file

#!/usr/local/bin/perl

use strict;
use warnings;

my $report = 'report.txt';
my $a = 5;

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( $a-- ){
    print "Enter your name please: " ;
    my $name = <STDIN>;
    chomp $name;

    say $fh $name;

}

close $fh;

ПРИМЕЧАНИЕ: ваш скрипт содержит shebang, что указывает на то, что вы используете Linux / UNIX

1 голос
/ 06 января 2020

Я думаю, что ОП просит напечатать вывод консоли в отчет.

#!/usr/local/bin/perl
# for loop execution

$b=0; Now this is unwanted scalar variable declaration

   for( $a = 0; $a < 5; $a = $a + 1 ) { # You can use $a++ here instead of $a = $a + 1 ;
   print "Enter your name please" ;
   my $name = <STDIN>;
   chomp $name; #You will check the filehandling I/O.
   open($filename, '>>', 'report.txt'); #You need to append the values into the report
   print $filename "$name\n";
   close $filename;
}

Просто попробуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...