Ошибка синтаксиса Perl: пример программы для чтения файла - PullRequest
0 голосов
/ 07 ноября 2011

Я получаю сообщение об ошибке при чтении файла, и ниже приведен скрипт.

#!/bin/bash
$file = "SampleLogFile.txt";    #--- line 2 
open(MYINPUTFILE,$file);        #--- line 3  
while(<**MYINPUTFILE**>) { 

# Good practice to store $_ value because
# subsequent operations may change it.
my($line) = $_;

# Good practice to always strip the trailing
# newline from the line.
chomp($line);

# Convert the line to upper case.
print "$line" if $line = ~ /sent/;

}
close (MYINPUTFILE);

Выход:

PerlTesting_New.ksh [2]: =: не найдено
PerlTesting_New.ksh [3]: синтаксическая ошибка в строке 3: `('неожиданная

Есть идеи, в чем проблема?

Ответы [ 3 ]

5 голосов
/ 07 ноября 2011

Измените

#!/bin/bash

на

#!/usr/bin/perl

В противном случае Perl не будет интерпретировать ваш скрипт.Измените путь соответственно вашей системе

1 голос
/ 07 ноября 2011

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

#!/usr/bin/perl

use strict;   # ALWAYS
use warnings; # Also always.  

# When you learn more you can selectively turn off bits of strict and warnings
# functionality  on an as needed basis.


use IO::File; # A nice OO module for working with files.

my $file_name = "SampleLogFile.txt"; # note that we have to declare $file now.

my $input_fh = IO::File->new( $file_name, '<' );  # Open the file read-only using IO::File.

# You can avoid assignment through $_ by assigning to a variable, even when you use <$fh>   

while( my $line = $input_fh->getline() ) { 

    # chomp($line); # Chomping is usually a good idea.  
                    # In this case it does nothing but screw up 
                    # your output, so I commented it out.

    # This does nothing of the sort:
    # Convert the line to upper case.
    print "$line" if $line = ~ /sent/;

}

Вы также можете сделать это с одним вкладышем:

perl -pe '$_ = "" unless /sent/;'  SampleLogFile.txt

См. perlrun для получения дополнительной информации об однострочниках.

0 голосов
/ 07 ноября 2011

хмм, ваша первая строка: #! / Bin / bash

/ bin / bash: Это оболочка Bash.

Возможно, вам придется изменить значение на

! / USR / бен / Perl

...