Try to use below updated ones:

#!/usr/bin/perl
use strict;
use warnings;
while (my $line = <>) {
    while ($line =~
        s#\d+\s*[*+-/]\s*\d+(\s*[*+-/]\s*\d+)*#<x>#) {
        my $result;
        eval ("$result = $&;");
        $line =~ s/<x>/$result/;

    }
    print ($line);
}



Regards,
Jin Xu



2015-11-25 23:09 GMT+08:00 Gary Baker <garybak...@gmail.com>:

> gb@MINT ~/Perl5/perl programs $ cat prog164.pl
> #!/usr/bin/perl
> use strict;
> use warnings;
> while ($line = <>) {
>     while ($line =~
>         s#\d+\s*[*+-/]\s*\d+(\s*[*+-/]\s*\d+)*#<x>#) {
>         eval ("\$result = $&;");
>         $line =~ s/<x>/$result/;
>
>     }
>     print ($line);
> }
>
>
>
> gb@MINT ~/Perl5/perl programs $ ./prog164.pl
> Global symbol "$line" requires explicit package name at ./prog164.pl line
> 4.
> Global symbol "$line" requires explicit package name at ./prog164.pl line
> 5.
> Global symbol "$line" requires explicit package name at ./prog164.pl line
> 8.
> Global symbol "$result" requires explicit package name at ./prog164.pl
> line 8.
> Global symbol "$line" requires explicit package name at ./prog164.pl line
> 11.
> Execution of ./prog164.pl aborted due to compilation errors.
> gb@MINT ~/Perl5/perl programs $
>
>
> What is this error? And what am I doing wrong.
>

Reply via email to