AI-Pathfinding-AStar-Rectangle
view release on metacpan or search on metacpan
3042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180
if
(
$s
% 10) {
die
"invalid version '$ver'\n"
;
}
$s
/= 10;
$ver
=
sprintf
"%d.%03d"
,
$r
,
$v
;
$s
> 0 and
$ver
.=
sprintf
"_%02d"
,
$s
;
return
$ver
;
}
return
sprintf
"%d.%d.%d"
,
$r
,
$v
,
$s
;
}
sub
info
{
$opt
{quiet} and
return
;
@_
,
"\n"
;
}
sub
diag
{
$opt
{quiet} and
return
;
$opt
{diag} and
@_
,
"\n"
;
}
sub
warning
{
$opt
{quiet} and
return
;
"*** "
,
@_
,
"\n"
;
}
sub
error
{
"*** ERROR: "
,
@_
,
"\n"
;
}
my
%given_hints
;
my
%given_warnings
;
sub
hint
{
$opt
{quiet} and
return
;
my
$func
=
shift
;
my
$rv
= 0;
if
(
exists
$warnings
{
$func
} && !
$given_warnings
{
$func
}++) {
my
$warn
=
$warnings
{
$func
};
$warn
=~ s!^!*** !mg;
"*** WARNING: $func\n"
,
$warn
;
$rv
++;
}
if
(
$opt
{hints} &&
exists
$hints
{
$func
} && !
$given_hints
{
$func
}++) {
my
$hint
=
$hints
{
$func
};
$hint
=~ s/^/ /mg;
" --- hint for $func ---\n"
,
$hint
;
}
$rv
;
}
sub
usage
{
my
(
$usage
) =
do
{
local
(
@ARGV
,$/)=($0); <> } =~ /^=head\d
$HS
+SYNOPSIS\s*^(.*?)\s*^=/ms;
my
%M
= (
'I'
=>
'*'
);
$usage
=~ s/^\s
*perl
\s+\S+/$^X $0/;
$usage
=~ s/([A-Z])<([^>]+)>/
$M
{$1}$2
$M
{$1}/g;
<<ENDUSAGE;
Usage: $usage
See perldoc $0 for details.
ENDUSAGE
exit
2;
}
sub
strip
{
my
$self
=
do
{
local
(
@ARGV
,$/)=($0); <> };
my
(
$copy
) =
$self
=~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms;
$copy
=~ s/^(?=\S+)/ /gms;
$self
=~ s/^
$HS
+Do NOT edit.*?(?=^-)/
$copy
/ms;
$self
=~ s/^SKIP.*(?=^__DATA__)/SKIP
if
(\
@ARGV
&& \
$ARGV
[0] eq
'--unstrip'
) {
\$@ and
die
"Cannot require Devel::PPPort, please install.\\n"
;
if
(
eval
\
$Devel::PPPort::VERSION
<
$VERSION
) {
die
"$0 was originally generated with Devel::PPPort $VERSION.\\n"
.
"Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
.
"Please install a newer version, or --unstrip will not work.\\n"
;
}
Devel::PPPort::WriteFile(\$0);
exit
0;
}
<<END;
Sorry, but this is a stripped version of \$0.
To be able to use its original script and doc functionality,
please try to regenerate this file using:
\$^X \$0 --unstrip
END
/ms;
my
(
$pl
,
$c
) =
$self
=~ /(.*^__DATA__)(.*)/ms;
$c
=~ s{
/ (?: \*[^*]*\*+(?:[^
$ccs
][^*]*\*+)* / | /[^\r\n]*)
| (
"[^"
\\]*(?:\\.[^
"\\]*)*"
|
'[^'
\\]*(?:\\.[^
'\\]*)*'
)
| (
$HS
+) }{
defined
$2 ?
' '
: ($1 ||
''
) }gsex;
$c
=~ s!\s+$!!mg;
$c
=~ s!^
$LF
!!mg;
$c
=~ s!^\s*
#\s*!#!mg;
$c
=~ s!^\s+!!mg;
open
OUT,
">$0"
or
die
"cannot strip $0: $!\n"
;
OUT
"$pl$c\n"
;
exit
0;
}
__DATA__
*/
#ifndef _P_P_PORTABILITY_H_
#define _P_P_PORTABILITY_H_
#ifndef DPPP_NAMESPACE
# define DPPP_NAMESPACE DPPP_
#endif
#define DPPP_CAT2(x,y) CAT2(x,y)
#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
#ifndef PERL_REVISION
# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
# define PERL_PATCHLEVEL_H_IMPLICIT
# include <patchlevel.h>
( run in 0.499 second using v1.01-cache-2.11-cpan-49f99fa48dc )