我应该将不带参数的 Perl 子例程称为 Marine() 或 Marine 吗?

2024-01-15

根据下面的示例代码,有两种调用子例程的方式:subname and subname().

#!C:\Perl\bin\perl.exe
use strict;
use warnings;

use 5.010;

&marine(); # style 1
&marine; # style 2

sub marine {
    state $n = 0; # private, persistent variable $n
    $n += 1;
    print "Hello, sailor number $n!\n";
}

哪一个,&marine(); or &marine;,如果调用中没有参数,是更好的选择吗?


In 学习 Perl http://www.learning-perl.com,这个例子来自哪里,我们一开始就向您展示子例程。我们只告诉您使用&这样,作为 Perler 初学者,您就不会遇到这样的问题:您定义了一个与 Perl 内置函数同名的子例程,然后又想知道为什么它不起作用。这&前面总是调用您定义的子例程。初学者经常创建自己的子程序log打印消息,因为他们习惯于在他们使用的其他技术中这样做。在 Perl 中,这是内置的数学函数。

当您习惯使用 Perl 并且了解 Perl 内置函数后(浏览perlfunc http://perldoc.perl.org/perlfunc.html),删除&。有一些特殊的魔法&你几乎不需要:

 marine();

你可以省略()如果你已经预先声明了子例程,但我通常会留下()甚至还有一个空的参数列表。它更健壮一点,因为你给 Perl 暗示marine是子程序名称。对我来说,我可以更快地认识到这是一个子程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该将不带参数的 Perl 子例程称为 Marine() 或 Marine 吗? 的相关文章

随机推荐

  • OCaml 中的函子

    我在函子 及其结果类型 方面遇到了一些问题 下面 我有一个Set使用一个函子Ordered类型 我实际上使用了set mlOCaml 附带提供一些指导 但我似乎正在做所有事情ahem正确的 我创建了一个Ordered模块与整数并将其应用到S
  • VBA:为什么人们在“Next”语句中包含变量的名称?

    我总是这样写我的 For 循环 For foo 1 to 10 do something Next 然而 当我在网上阅读代码片段时 人们总是这样做 For foo 1 to 10 do something Next foo 我没有注意到两者
  • SSIS 脚本编辑器加载速度非常慢

    在我的角色中 我偶尔会使用 SSIS 在我最新的包中 我使用了脚本任务 我的机器速度足够快 运行 64 位并且有大量内存 但每当我尝试编辑脚本时 我必须等待近一分钟才能加载代码 我正在使用 VS 2012 和 SQL 2012 任何想法 不
  • 在 Redshift 外部表中引用转义引号

    我正在尝试从 csv 中创建一个 Redshift 外部表 其中包含转义引号 如中所述rfc4180 https www rfc editor org rfc rfc4180 如果使用双引号将字段括起来 则使用双引号 出现在字段内的内容必须
  • Python - sys.stderr 未保存到 .txt 或 .log

    我正在检查标准流的工作情况 目前我正在使用stderr使用Python 为了解释清楚 以下是我的代码 print Python testt 当我运行代码时 我得到以下信息 Python Traceback most recent call
  • 如何将 ASP.NET Core 应用程序发布到 ftp 服务器

    Visual Studio发布仅支持导入Web部署 有解决方法吗 Visual Studio 发布配置文件支持纯 FTP 作为目标 但它不支持 SFTP 您应该看到以下选项 网络部署 网络部署包 FTP 不幸的是不支持SFTP 文件系统 U
  • 静态常量变量在子类中不是常量

    我使用的是 Visual Studio 2008 有两个类 Parent 和 Child Parent在头文件中声明了一些静态const变量 然后在cpp文件中定义这些变量 当我尝试在子类的 switch 语句中使用定义作为 case 时
  • Visual Studio 2012 条件捆绑

    我刚刚开始使用 VS 2012 RC 我创建了一个带有母版页和单个 Web 表单的测试站点 目前 我正在使用此代码来捆绑整个Styles网站上的文件夹 全局 asax BundleTable Bundles EnableDefaultBun
  • 如何使用 CoffeeScript 存在运算符来检查某些对象属性是否未定义?

    我想使用 CoffeeScript 存在运算符来检查某些对象属性是否未定义 然而 我遇到了一个小问题 代码如下 console log test if test 编译为 if typeof test undefined test null
  • 为什么C#不允许运算符重载?

    为什么 C 不允许运算符重载 而 C 却允许 尝试超载时出现此错误 预期可重载二元运算符 我的示例代码看起来像 public static MyClass operator MyClass obj1 MyClass obj2 您可以在 C
  • 在 rmarkdown html 输出中添加 X-UA-Compatible

    我正在尝试添加以下标签 as the first一后
  • 如何在动画之后将更改应用到视图位置?

    我将 TranslateAnimation 应用于带有 FillAfter true 的 EditText 以保持其在动画末尾的位置 动画工作正常 但问题是我无法再输入编辑文本 我认为这是因为动画仅影响渲染而不修改实际的视图坐标 是否有可能
  • 删除Linux上的终端输出

    我正在编写一个命令行程序 它将有一个状态栏 很像 wget 我面临的主要问题是 如何删除已经发送到 stdout stderr 的内容 我有一个想法 使用退格字符 b 并删除我发送的输出 这是最好的方法吗 这是唯一的方法吗 有没有更好的办法
  • 在 Objective-c 中,如何创建一个可供所有子类访问但不能公开访问的方法

    假设我创建了一个 viewController 然后我想创建另一个类似于第一个视图控制器 看起来像是一份继承的工作 然而 原始ViewController的许多任务都是私有方法 我想最小化公共接口 如果我将这些方法声明为公开的话 那么就达不
  • 如何在 QML 中设计多层流体布局

    我在 QML 中设计了一个布局 以了解有关其功能的更多信息 并对设计此类布局的 最佳实践 有一些疑问 这里是 它本质上是一个列布局由三个组成行布局s 每一个都有一些长方形s 每行和矩形的大小应计算如下 First row Height 40
  • 何时使用以下瞬态、作用域和单例

    我读了一些关于此的文章 并且了解了如何使用 Transient Scoped 和 Singleton 但我很困惑何时使用其中之一 我的理解是 辛格尔顿 在需要存储员工数量的情况下 您可以创建单例 因为每次创建新员工时 它都会增加数量 因此在
  • 导入 _ssl 错误,DLL 加载失败,Python 37 Anaconda Windows 10

    我在 Win10 上遇到 ssl 问题 我已将 python 包和代码从 Windows 7 移至 Windows 10 一开始我面临以下问题 导入错误 缺少必需的依赖项 numpy 但这是通过重新安装 numpy 和 pandas 的 w
  • firebase 部署到自定义区域 (eu-central1)

    有没有办法指定将部署我的 firebase 函数的区域 区域 实际上我在文档中没有找到任何相关内容 并且我的函数总是部署到us central1但我想戴上它eu central1 是否可以在 Firebase 配置 文件中设置它 datab
  • 如何在 Meteor JS 中将数组值加载到模板变量?

    如何将数组值加载到 Meteor 中的模板变量 请查看下面的代码并建议我该怎么做 HTML 代码
  • 我应该将不带参数的 Perl 子例程称为 Marine() 或 Marine 吗?

    根据下面的示例代码 有两种调用子例程的方式 subname and subname C Perl bin perl exe use strict use warnings use 5 010 marine style 1 marine st