gpt4 book ai didi

perl - 在 Perl 中读取输入文件并将其放入带有空格分隔符的数组中

转载 作者:行者123 更新时间:2023-12-05 00:35:16 25 4
gpt4 key购买 nike

我正在尝试使用 @ARGV 获取输入文件数组并将它的所有元素写入一个在 perl 中带有分隔符空间的数组。

示例输入参数是一个 txt 文件,例如:

0145 2145
4578 47896
45 78841
1249 24873

(有多条线,但这里没有显示)
问题是:
  • 我不知道如何将 ARG[0] 转换为数组
  • 我想将该输入文件的每个字符串作为单个字符串,换句话说 line1 0145 2145 不会是一个字符串,它将是两个不同的字符串,用空格分隔。
  • 最佳答案

    我想这就是你想要的。 @resultarray在此代码中将最终持有一个数字列表。

    如果你给你的程序一个文件名作为命令行的输入,把它从 ARGV 数组中取出并作为文件句柄打开:

    my $filename = $ARGV[0];
    open(my $filehandle, '<', $filename) or die "Could not open $filename\n";

    获得文件句柄后,您可以使用 while 循环遍历文件的每一行。 chomp从每一行的末尾去掉那个新行字符。使用 split根据空格拆分每行。这将返回一个数组(在我的代码中为 @linearray),其中包含该行中的数字列表。然后我 push我的线阵列到我的 @resultarray 的末尾.
    my @resultarray;
    while(my $line = <$filehandle>){
    chomp $line;
    my @linearray = split(" ", $line);
    push(@resultarray, @linearray);
    }

    并记得添加
    use warnings;
    use strict;

    在您的 perl 文件的顶部,如果您在代码中遇到任何问题,可以为您提供帮助。

    只是为了澄清您如何处理程序的不同输入。以下命令:
    perlfile.pl < inputfile.txt

    将获取 inputfile.txt 的内容并将其通过管道传送到 STDIN文件句柄。然后你可以使用这个文件句柄来访问 inputfile.txt 的内容
    while(my $line = <STDIN>){
    # do something with this $line
    }

    但是您也可以通过将它们放在执行命令之后来为您的程序提供许多文件名以供读取:
    perlfile.pl inputfile1.txt inputfile2.txt

    这些文件名将作为字符串读取并放入@ARGV 数组中,这样数组将如下所示:
    @ARGV:
    [0] => "inputfile1.txt"
    [1] => "inputfile2.txt"

    由于这些只是文件名,因此在访问文件内容之前,您需要在 perl 中打开该文件。所以对于 inputfile1.txt:
    my $filename1 = shift(@ARGV);
    open(my $filehandle1, '<', $filename1) or die "Can't open $filename1";

    while(my $line = <$filehandle1>){
    # do something with this line
    }

    请注意我如何使用 shift这次获取数组@ARGV 中的下一个元素。见 perldoc有关类次的更多详细信息。以及有关 open 的更多信息.

    关于perl - 在 Perl 中读取输入文件并将其放入带有空格分隔符的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655253/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com