J
Jesper Bork
I have a large Perl application which I'm trying to port from ActivePerl
5.005 series to 5.6 series, however, while most things works as usual, I get
the following error message
Can't find unicode character property definition via main->r or r.pl at
unicode/Is/r.pl line 0
when invoking the method below
sub getFileCodeSection {
# Create the code section
# Arguments:
# 1: Object instance
# 2: Filename (just in case - probably not used!)
# Return Value:
# GOOD: the code section in a string
# BAD: 0
my $self = shift;
my $pathname = shift;
my ($filename, $type, $code, $keyword, $fullname, $username,
$classname);
my ($packagename);
# Remove the path from filename
$filename = DapUtil::getFileNameFromPath ($pathname);
# Get the name of the primary class in the file
$classname = DapUtil::getFileBaseNameFromPath ($filename);
# Get the username and fullname of the current user
$username = $self->{'username'};
$fullname = $self->{'fullname'};
# Ask the VersionControlSystem for the Revision Keyword
if (Environment::isUsingVersionControl ($ENV{'Project_Name'})) {
$keyword =
ToolFactory::getCurrentVersionControlSystem()->getRevisionNumberKeyword();
} else {
$keyword = '';
}
# Generate the package name to be used for this file.
# The packagename is constructed relative to the "java-code-container"
directory.
# The "java-code-container" directory is constructed by looking up the
path for
# a directory of a special name. If none of the special names are found,
then there
# is not put any "package" statement in the file.
# The priority of the special names are:
# 1: src\java
# 2: src
# 3: test
# We search case-insensitively!
if ($pathname =~ /\\src\\java\\(.+)$/i) {
# The path following src\java is now in $1
$packagename = $1;
} elsif ($pathname =~ /\\src\\(.+)$/i) {
# The path following src is now in $1
$packagename = $1;
} elsif ($pathname =~ /\\test\\(.+)$/i) {
# The path following test is now in $1
$packagename = $1;
} else {
$packagename = '';
}
# Remove filename from rest-path
$packagename =~ s/\\[^\\]+$//;
# Exchange backslashes with dots
$packagename =~ tr/\\/\./;
if ($packagename ne '') {
$code = "package $packagename;\n\n";
}
$code .= <<"MARK";
/*---
Imports -------------------------------------------------------------*/
/*---
Classes -------------------------------------------------------------*/
/**
* Interface description.
*
* \@see java.lang.Object
* \@author $fullname ($username)
* \@version $keyword
*
**/
public interface $classname
{
}
MARK
return $code;
}
The method above does not imply any use of Unicode to me, however, it is
correct that no r.pl file exists - they seem only to exist for a certain
subset of characters - I've looked through the ActivePerl 5.6.1 build 635
and no r.pl exists there neither.
Any ideas, hints ?!
best regards,
Jesper Bork
FKI Logistex
5.005 series to 5.6 series, however, while most things works as usual, I get
the following error message
Can't find unicode character property definition via main->r or r.pl at
unicode/Is/r.pl line 0
when invoking the method below
sub getFileCodeSection {
# Create the code section
# Arguments:
# 1: Object instance
# 2: Filename (just in case - probably not used!)
# Return Value:
# GOOD: the code section in a string
# BAD: 0
my $self = shift;
my $pathname = shift;
my ($filename, $type, $code, $keyword, $fullname, $username,
$classname);
my ($packagename);
# Remove the path from filename
$filename = DapUtil::getFileNameFromPath ($pathname);
# Get the name of the primary class in the file
$classname = DapUtil::getFileBaseNameFromPath ($filename);
# Get the username and fullname of the current user
$username = $self->{'username'};
$fullname = $self->{'fullname'};
# Ask the VersionControlSystem for the Revision Keyword
if (Environment::isUsingVersionControl ($ENV{'Project_Name'})) {
$keyword =
ToolFactory::getCurrentVersionControlSystem()->getRevisionNumberKeyword();
} else {
$keyword = '';
}
# Generate the package name to be used for this file.
# The packagename is constructed relative to the "java-code-container"
directory.
# The "java-code-container" directory is constructed by looking up the
path for
# a directory of a special name. If none of the special names are found,
then there
# is not put any "package" statement in the file.
# The priority of the special names are:
# 1: src\java
# 2: src
# 3: test
# We search case-insensitively!
if ($pathname =~ /\\src\\java\\(.+)$/i) {
# The path following src\java is now in $1
$packagename = $1;
} elsif ($pathname =~ /\\src\\(.+)$/i) {
# The path following src is now in $1
$packagename = $1;
} elsif ($pathname =~ /\\test\\(.+)$/i) {
# The path following test is now in $1
$packagename = $1;
} else {
$packagename = '';
}
# Remove filename from rest-path
$packagename =~ s/\\[^\\]+$//;
# Exchange backslashes with dots
$packagename =~ tr/\\/\./;
if ($packagename ne '') {
$code = "package $packagename;\n\n";
}
$code .= <<"MARK";
/*---
Imports -------------------------------------------------------------*/
/*---
Classes -------------------------------------------------------------*/
/**
* Interface description.
*
* \@see java.lang.Object
* \@author $fullname ($username)
* \@version $keyword
*
**/
public interface $classname
{
}
MARK
return $code;
}
The method above does not imply any use of Unicode to me, however, it is
correct that no r.pl file exists - they seem only to exist for a certain
subset of characters - I've looked through the ActivePerl 5.6.1 build 635
and no r.pl exists there neither.
Any ideas, hints ?!
best regards,
Jesper Bork
FKI Logistex