perl - 如何让子程序具有所需的参数?

标签 perl parameters subroutine

是否可以在 Perl 中声明一个子例程,以便在调用脚本时如果未向其传递参数,脚本将无法编译?

最佳答案

我认为这种事情是你目前能做的最好的事情:

#!/usr/local/bin/perl -w
use strict;
require 5.020;
use warnings;
use feature qw( say signatures );
no warnings "experimental::signatures";

print "Enter your first name: ";
chomp(my $name1 = <STDIN>);

print "Enter your last name: ";
chomp(my $name2 = <STDIN>);

say "Calling takesOneOrTwoScalars with 2 args";
takesOneOrTwoScalars($name1, $name2);

say "Calling takesOneOrTwoScalars with 1 arg";
takesOneOrTwoScalars($name1);

say "Calling takesOneOrTwoScalars with 0 args";
takesOneOrTwoScalars();

sub takesOneOrTwoScalars($firstName, $lastName="")
{
    print "Hello, $firstName";
    if ($lastName)
    {
        say " $lastName";
    }
    else
    {
        say ", I see you didn't give your last name.";
    }
}

关于perl - 如何让子程序具有所需的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678010/

相关文章:

arrays - 我如何制作 Perl "array of arrays of hashes"?

javascript - 与初始函数调用之前/之后相比,将函数作为参数运行有什么实际应用?

parameters - Swagger 2.0 : How to specify an input parameter of type 'object'

perl - 为什么我要使用 Perl 匿名子例程而不是命名的子例程?

function - 有没有办法在 fortran 中隐式定义函数中间程序'

perl - 如何在Perl中正确声明全局变量?

xml - 使用 Perl 脚本创建和填充复杂的 XML

MySQL-Perl : How to get array of zip codes within submitted "x" miles of submitted "zipcode" in Perl example

sql-server - 如何将可变数量的参数传递给 SQL Server 存储过程?

Perl:使父子例程(而不是方法)可供子例程使用的最佳方法