【问题标题】:How to find linecount in Perl? [duplicate]如何在 Perl 中查找行数? [复制]
【发布时间】:2019-02-28 09:37:29
【问题描述】:

我如何在 perl 中找到类似于 wc -l 给我的行数。最好是不需要读取整个文件的方法。

【问题讨论】:

  • 执行此操作的最佳方法取决于您已经对该文件执行的操作以及何时需要该信息,但您尚未共享该信息。

标签: perl wc


【解决方案1】:

这个问题太笼统了,不够具体。但由于它基于一个常见的误解,我想对此发表评论。

文件是一个字节序列,没有“行”的概念。我们在显示文件时看到的行由文件中的特定字符(或短字符序列)确定,表示查看或编辑文件的软件要使用的“换行符”。它们不是可以作为元数据查找的文件的属性。

所以你必须阅读整个文件以确定它有多少“行”。

这可以使用语言中的本地工具或通过运行执行此操作的外部实用程序来完成,例如wc。我建议在 Perl 程序中使用 Perl 来完成,因为这项工作完全符合 Perl 最常见的用途。然后有多种方法可以做到这一点,但我们需要查看您的代码才能提供具体建议。

【讨论】:

  • @Abigail 作者:为什么要出去系统购买一些完全符合语言能力的东西?呆在家里(可以这么说)有系统性的好处,而外出的好处却很少;它几乎没有节省一两行代码——如果有的话——我们必须检查等等。我认为计算和主要语言已经发展得如此之多,以至于 Perl 的“粘合”方面不再是前沿和中心;我更认为它是一种完整的语言,可以解决大多数需要的问题。但也许我走得太远了,所以我把它编辑掉了,谢谢你打电话给它。
  • @Abigail 好吧,这是一个有效的论点。但是,所有程序都应该充满各种外部实用程序,不是吗?它大大增加了对外部代码的依赖。通过“滚动我自己的”(三行),我避免出海,即系统。对于这样简单的东西,我不需要“现有代码”(但如果人们使用它,我不认为它很糟糕,而且我过去经常这样做)。
  • @Abigail 考虑一下,是的,我拒绝“使用现有代码”(外部实用程序)用于非常简单的东西。我不会加载一个模块或进入系统去完成一项完全用两三行代码完成的工作。现在我正在回应您的原则评论;我不反对wc 或类似的系统工具。
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
相关资源
最近更新 更多