2016-06-05 3 views
-2

Я просматриваю книгу и делаю следующее из примеров, чтобы ответить на упражнение. Возможно, я что-то испортил, но мне все хорошо. Я получаю сообщение об ошибке: Недопустимое объявление подпрограммы main :: read_file в строке x3.pl 31. Я не уверен, что здесь не так, и мне очень понравилась бы помощь. Автор хочет использовать использование croak, поэтому, если это испорчено, включите его в решение.незаконная декларация подпрограммы, perl

use strict; 
use warnings; 

sub croak { die "$0: @_: $!\n" } 

sub read_file { 
    my $file = shift; 
    open (FILE, $file) || croak "Couldn't open $file"; 

    while (my $line = <FILE>) { 
     read_line $line; 
     } 
     } 

sub read_line { 
    our %hash; 

    my @list = split " ", shift; 
    foreach my $word (@list) { 
     $hash{$word}++; 
     } 
     } 

sub print_has { 
    our %hash; 

    my @list = keys %hash; 
    print "@list\n"; 
    } 

sub read_file @ARGV 
sub print_has 

ответ

2

Это неправильно:

sub read_file @ARGV 
sub print_has 

Я думаю, что вы пытаетесь вызвать подлодки? В вызовах подпрограмм не используется ключевое слово sub.

read_file @ARGV; 
print_has; 

В коде существует множество вредоносных методов, один из которых предотвращает запуск кода. Вы должны подвергнуть его code review.

+0

стоит ссылку на http://codereview.stackexchange.com/ в вашем ответе? – stevieb

+1

@stevieb, Done :) – ikegami

+0

Спасибо, полностью пропустил это. Сейчас он делает что-то неожиданное. Он пытается найти метод объекта из строки read_line $; Будет редактировать op. – Dan

 Смежные вопросы

  • Нет связанных вопросов^_^