小编Sin*_*nür的帖子

如何从Perl调用Java程序?

我是Perl的新手,我正在尝试做一些事情而无法找到答案.

我创建了一个Java项目,其中包含一个获取多个输入参数的主类.

我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,然后运行它.

例如:

如果我的主叫mymain,我这样称呼它:mymain 3 4 hi(3,4并且hi是输入参数),我想创建一个名为Perl程序myperl,当它被调用作为myperl 3 4 hi将传递参数给Java程序并运行它.

我怎样才能做到这一点?

java perl

0
推荐指数
1
解决办法
1万
查看次数

为什么通过ref需要转移而不是@_?

我有一个关于通过引用Perl中的子例程的问题.对于值,如果我使用@_传递它可以工作但是对于ref只有shift工作.不知道为什么.我有以下示例代码:

这有效:

#! /usr/bin/perl

use strict;
use warnings;

my $name = 'John';
PassScalarByRef( \$name );

sub PassScalarByRef{
    my $got = shift;
    print "Hello $$got\n";
}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

#! /usr/bin/perl

use strict;
use warnings;

my $name = 'John';
PassScalarByRef( \$name );

sub PassScalarByRef{
    my $got = @_;
    print "Hello $$got\n";
}
Run Code Online (Sandbox Code Playgroud)

perl

0
推荐指数
2
解决办法
116
查看次数

在Perl中,当我尝试递归遍历目录时,为什么我的目录句柄被关闭?

这是我的代码.我正在搜索重复的目录.我需要深度优先搜索.我使用递归,如果DH看到一个文件夹,那么它会查找该文件夹.但完成此文件夹后DH处理关闭和程序不会查看顶级文件夹的剩余部分.

        #! /usr/bin/perl 
use Digest::MD5;

dtraverse(@ARGV) ;

sub dtraverse {
   my $fullpathname ;
   my @subdirlist ; 
   my @filelist2  ; 
   my $newpath ;
   my $name ;
   my $d ; 

    print "entered    nnnn\n";
   $fullpathname = $_[0]; 
   opendir(DH,$fullpathname) or die("Cannot open directory\n"); 
   @subdirlist = () ; 
   @filelist2 = () ; 
   while ($name = readdir(DH) ) { 
       next if (($name eq ".") or ($name eq "..") ); 
       $newpath = $fullpathname . "/" . $name ; 
        print "asdasd == $name\n";
       if (-d $newpath ) { …
Run Code Online (Sandbox Code Playgroud)

directory recursion perl

0
推荐指数
1
解决办法
72
查看次数

如何使用foreach循环检查数组的哪些元素等于给定的字符串?

我的foreach循环不能按照我的意愿工作.我希望它循环遍历数组,并找到一个元素存在的时间和元素不存在的时间.但是,我得到了所有人的说法Not an apple.

@fruit = ('apple','orange','pear');

foreach(@fruit){
     if(@fruit != 'apple'){
          print "Not an apple\n";
     }
     else{
          print "Is an apple\n";
     }
}
Run Code Online (Sandbox Code Playgroud)

perl foreach

0
推荐指数
1
解决办法
1116
查看次数

在Perl中,如何循环变量名?

我有N数组,我想在单个for循环中打印它们的第一个元素

我的代码:

@arr1=qw(1..5);
@arr2=qw(6..10);
...
@arrN=qw(...);
for($i=1;$i<=$N;$i++)
{
print "$arr[$i][0]";
}
Run Code Online (Sandbox Code Playgroud)

perl for-loop

0
推荐指数
1
解决办法
638
查看次数

在Perl中,如何在两个数组中找到整体最小值?

我有两个包含整数的数组.例如:

@arr1 = ( 2, 5, 6)
@arr2 = ( 1, 4, 7)
Run Code Online (Sandbox Code Playgroud)

如何找到这两个数组之间的最小值?

perl minimum

0
推荐指数
1
解决办法
263
查看次数

如何在Perl的///运算符中使用包含正则表达式特殊字符的模式?

我正在使用的模式s///包含正则表达式特殊字符.我如何引用它们以便正则表达式引擎将它们视为文字字符.

我可以quotemeta在这样的模式中调用子例程()吗?

$string =~ s/quotemeta($regex)/$new/g;
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

regex perl

0
推荐指数
1
解决办法
84
查看次数

如何匹配Perl中两个大文件的数据?

我有2个(大)文件.第一个是大约20万行,第二个是大约3000万行.

我想使用Perl检查第一行中的每一行是否在第二行中.将第一行中的每一行直接与第二行中的每一行进行比较是否更快,或者将它们全部存储在两个不同的数组中然后操作数组更好?

perl performance file

0
推荐指数
1
解决办法
87
查看次数

在Perl中,如何使用`s ///`进行多次替换?

我的意见:

 $brackets = '\left \right \center \right \left \middle';
Run Code Online (Sandbox Code Playgroud)

在上面的字符串中,我需要将每个\left字符串替换为(开括号,将每个字符串替换\right)右括号.

我可以用几种方法替换以获得输出.但是我想知道如何在r修饰符中完成此操作.这是我到目前为止所拥有的

 $brackets=~s{\\(left|right)}{$&=~s/\\left/\(/r && $&=~s/\\right/\)/gr; }ge;
Run Code Online (Sandbox Code Playgroud)

我不知道在哪里可以找到我的错误.

regex perl

0
推荐指数
2
解决办法
185
查看次数

在Perl中,如何将变量作为参数传递给子例程?

我正在将标量变量传递给子例程,在该子例程中我想测试参数是否与正则表达式匹配:

use strict;
use warnings;

use Data::Dumper;

print "Please enter your first name followed by your last name. For example: John Smith.\n";

chomp(my $name = <STDIN>);

&analyze_name($name);

sub analyze_name {
    if ($_ =~ /^\w+\s+\w+$/) {
            print "You entered $_.";
                    } else {
            print "Incorrect convention";
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到输出有以下错误

Please enter your first name followed by your last name. For example: John Smith.
firstname lastname
Incorrect convention
Use of uninitialized value $_ in pattern match (m//) at /home/jhusbands/scripts/examples/test.pl line 13, <STDIN> …
Run Code Online (Sandbox Code Playgroud)

perl parameter-passing subroutine

0
推荐指数
1
解决办法
2182
查看次数