Difference between revisions of "Perl eval"

From Teknologisk videncenter
Jump to: navigation, search
m
m (Example)
 
(One intermediate revision by the same user not shown)
Line 23: Line 23:
 
}
 
}
 
</source>
 
</source>
 +
=Example=
 +
<source lang=perl>
 +
#!/usr/bin/perl
 +
 +
eval
 +
{
 +
    my $res = 1/0;
 +
};
 +
if($@)
 +
{
 +
print("Help - I'm dying\n");
 +
print("    Perl Script.: $0\n");
 +
print("    Perl verson.: $]\n");
 +
print("    Error #.....: ",$@,"\n");
 +
exit;
 +
}
 +
</source>
 +
Yields
 +
<pre>
 +
 +
Help - I'm dying
 +
    Perl Script.: C:\Programmer\Perl Express\Debug\temp6.cgi
 +
    Perl verson.: 5.010001
 +
    Error #.....: Illegal division by zero at C:\Programmer\Perl Express\Debug\temp6.cgi line 5.
 +
</pre>

Latest revision as of 13:40, 27 June 2010

Perl eval can be used as try and catch exception handling.

eval
{
    # try
};
if($@)
{
    # catch
}

Throwing an exception

eval
{
    # try
    die "Exception text to be catched";
};
if($@)
{
    # catch
}

Example

#!/usr/bin/perl

eval
{
    my $res = 1/0;
};
if($@)
{
 print("Help - I'm dying\n");
 print("    Perl Script.: $0\n");
 print("    Perl verson.: $]\n");
 print("    Error #.....: ",$@,"\n");
 exit;
}

Yields


Help - I'm dying
    Perl Script.: C:\Programmer\Perl Express\Debug\temp6.cgi
    Perl verson.: 5.010001
    Error #.....: Illegal division by zero at C:\Programmer\Perl Express\Debug\temp6.cgi line 5.