相关疑难解决方法(0)

如何将命令行参数传递给Perl程序?

我正在研究Perl脚本.如何将命令行参数传递给它?

例:

script.pl "string1" "string2"
Run Code Online (Sandbox Code Playgroud)

perl command-line

135
推荐指数
8
解决办法
34万
查看次数

Perl子例程参数

我最近一直在阅读有关Perl的内容,并且对于Perl如何处理传递给子例程的参数感到有些困惑.

在Python,Java或PHP等语言中,函数定义采用(伪代码)形式:

function myFunc(arg1, arg2) {
    // Do something with arg1 and arg2 here
}
Run Code Online (Sandbox Code Playgroud)

然而在Perl中,它只是:

sub mySub {
    # @_ holds all arguments passed
}
Run Code Online (Sandbox Code Playgroud)

据我了解,这是唯一的方法.

  • 如果我想限制调用者只传递2个参数怎么办?

  • 这不仅仅是Perl在其他语言(即Python,C等)中不允许任何变量数量参数吗?

  • 在某些时候这不会成为问题吗?

  • 其他语言中的所有默认参数号检查怎么样?是否必须在Perl中明确地做到这一点?例如

    sub a_sub {
        if (@_ == 2) {
            # Continue function
        }
        else {
            return false
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

perl

40
推荐指数
6
解决办法
7万
查看次数

如何将可选参数传递给Perl函数?

我想将一些参数(其中一个是可选的)传递给一个函数.我知道的唯一方法是使用列表(@)作为参数.因此,它没有内容或1个元素(永远不会是undef),所以我可以使用以下代码:

sub someFunction($$@) {
    my ( $oblig_param1, $oblig_param2, $option_param ) = @_;
    ...
} 
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但我觉得这可能不是最好的解决方法.
有没有其他方法可以做到这一点?
谢谢.

perl subroutine

16
推荐指数
3
解决办法
4万
查看次数

你如何访问Perl中的函数参数?

在C++中我会做这样的事情:

void some_func(const char *str, ...);
some_func("hi %s u r %d", "n00b", 420);
Run Code Online (Sandbox Code Playgroud)

在PHP中我会这样做:

function some_func()
{
    $args = func_get_args();
}
some_func($holy, $moly, $guacomole);
Run Code Online (Sandbox Code Playgroud)

我如何在Perl中做到这一点?

sub wut {
    # What goes here?
}
Run Code Online (Sandbox Code Playgroud)

perl subroutine

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

Perl函数声明

这是一个Perl n00b问题,但我没有找到一个清晰易懂的在线回答.

我有这个代码:

1.sub remCH();
2.#some stuff
3.$line = remCH($line);
4.
5.sub remCH() {
6.$rem = shift;
7.$rem = chomp($rem);
8.return ($rem);
9.}
Run Code Online (Sandbox Code Playgroud)

执行此代码时总是会出现以下错误(第24行将在上面的代码中为第3行):

Too many arguments for main::rem_CRLF at ./make_csv.pl line 24, near "$line)" 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这是因为函数设置为返回一些东西但是当我声明它时,它被声明为"void".

我如何声明如下函数???

sub remCH(string/integer);
Run Code Online (Sandbox Code Playgroud)

perl prototype declaration

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

标签 统计

perl ×5

subroutine ×2

command-line ×1

declaration ×1

prototype ×1