我有一个文件,我想用管道作为分隔符拆分。如何使用Perl读取文件?

时间:2016-05-06 07:00:19

标签: perl split delimiter

这是一个读取文件的shell脚本。

#!/bin/sh

procDate=$1
echo "Date $procDate"

file=`cat filename_$procDate.txt`

echo "$file"

我想将其转换为Perl并使用管道split的{​​{1}}运算符作为分隔符。

2 个答案:

答案 0 :(得分:0)

从你的问题中可以清楚地看出,一旦你将它们分开,你想用这些字段做什么

您自己的shell脚本使用cat将文件的全部内容复制到$file,但这不太可能是您需要做的事情

非常通用的Perl程序看起来像这样

use strict;
use warnings 'all';

my ($procDate) = @ARGV;

print "Date $procDate\n";

open my $fh, '<', "filename_$procDate.txt" or die $!;

while ( <$fh> ) {
    chomp;
    my @fields = split /\|/;

    # do something with @fields, for instance
    print "@fields\n";
}

该代码拆分管道|个字符的每一行,将子串列表放在@fields中,然后用空格分隔打印。但我猜不出你还想做什么?

答案 1 :(得分:-1)

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

open(FILE, "<filename_$procDate.txt") or die "Couldn't open file filename_$procDate.txt, $!";

while ( my $line = <FILE> ) {
    print "Line content is $line\n";
    my @line_content = split(/\|/, $line);
    print Dumper (\@line_content);
}

close (FILE);