【问题标题】:How to Make _ _ LINE _ _ and _ _ FILE_ _ run in perl? [closed]如何让 _ _ LINE _ _ 和 _ _ FILE_ _ 在 perl 中运行? [关闭]
【发布时间】:2015-08-29 19:17:51
【问题描述】:

(脚本)

#!/usr/bin/perl
# Program, named literals.perl

为测试特殊文字而编写

1   print "We are on line number ", _ _LINE_ _, ".\n";
2   print "The name of this file is ",_ _FILE_ _,".\n";
3   _ _END_ _

这些东西只是一堆喋喋不休的喋喋不休 被 Perl 忽略。 _ _END_ _ literal 类似于 Ctrl–d\004.[a]

(输出)

1 我们在第 3 行。
2 这个文件的名字是literals.perl。

解释 如果要解释特殊文字_ _LINE_ _,则不能将其括在引号中。它保存 Perl 脚本的当前行号。

此脚本的名称是 literals.perl。特殊文字 _ _FILE_ _ 包含当前 Perl 脚本的名称。

特殊文字_ _END_ _ 表示脚本的逻辑结束。它告诉 Perl 忽略任何跟在它后面的字符。

print "The script is called", _ _FILE_ _, "and we are on line number ",
_ _LINE_ _,"\n";

(输出)

脚本名为 ./testing.plx,我们在第 2 行

我需要帮助才能使这个示例正常工作。我在运行它时遇到了一些麻烦。当我在 console2 上运行它时,我会收到一条错误消息

“无法通过包“LINE”定位对象方法“_”(也许你 忘记在 C:\users\john\desktop\console2\test.pl 加载“LINE”?) 第 5 行。

任何有关如何解决此问题的想法将不胜感激。谢谢!

【问题讨论】:

  • 了解如何使用 Stack Overflow 上的代码格式化工具,因为我们无法判断您正在运行什么程序。粘贴文字代码,突出显示它,然后单击 {} 图标将其缩进 4 个空格。
  • 名称,如果它们有效的话,将是__FILE____LINE__,带有双下划线且没有空格,就像C 中使用C 预处理器的符号一样。错误消息表明您使用了带有空格的_ _FILE_ _,而不仅仅是因为 Stack Overflow 中的 Markdown 编辑器将 __ 视为粗体符号。是什么赋予了?你能引用确切的错误信息吗?我很确定它不会使用带有撇号的“cant”而不是“can't”。它应该缩进 4 个空格,所以它显示为“代码”。

标签: windows perl literals console2


【解决方案1】:

您需要使用下划线之间没有空格的名称:

#!/usr/bin/env perl
use strict;
use warnings;

print "We are on line number ", __LINE__, ".\n";
print "The name of this file is ", __FILE__, ".\n";
__END__

print "This is not part of the script\n";

当保存在fileline.pl 中并运行时,会产生:

We are on line number 5.
The name of this file is fileline.pl.

请注意,连续的下划线之间没有空格。请注意,包含print 语句的最后一行不是脚本的一部分,因为它位于__END__ 之后。 (还有一个 __DATA__ 指令有时很有用。)

【讨论】:

  • 感谢您的所有帮助!我能够让它工作我删除了文字之间的空格。我非常感激。顺便说一句,为什么 perl 示例在应该使用 FILE,LINE 时使用 _ FILE _, _ _LINE _ _ 等?
  • 你从哪里得到 Perl 的例子?
  • @JawnFam:有些人很难发现_FILE___FILE__ 之间的区别,所以他们使用空格(最好是分数空格,例如U+2009 THIN SPACE 或U+200A HAIR SPACE ) 来分隔它们,但当然这样的空格在等宽字体中效果不佳。此外,在 SO 上,Markdown 系统将双下划线视为粗体标记,单下划线请求斜体:FILEFILE。对比 _ _ FILE _ _ 应该只是作为两个单独的下划线可见,并且它们周围的空间最小(U+2008 PUNCTUATION SPACE)。
  • @JimDavis 我正在使用一本名为“perl by example”的书,由 ellie quigley 第四版编写。我是一个菜鸟,所以我问我的一个同事,他恰好是一名程序员,我应该先学习哪种语言,他推荐了 perl,所以我坚持了下来。我尝试完成这本书,然后转向另一种语言,我已经完成了。
  • @JonathanLeffler okie dokie,我现在明白了。谢谢你的澄清。
【解决方案2】:

文字__FILE____LINE__(或__END__)中没有空格。一行中只有 2 个下划线,单词和另外 2 个下划线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多