perl 읽기 데이터 파일을 배열로 읽는 올바른 방법




perl 파일 읽기 배열 (4)

File::Slurp module을 사용하는 가장 쉬운 방법이 있습니다 :

use File::Slurp;
my @lines = read_file("filename", chomp => 1); # will chomp() each line

각 행에 대해 유효성 검사가 필요한 경우 read_file 앞에 grep 을 사용할 수 있습니다.

예를 들어, 정수만 포함하는 필터 행 :

my @lines = grep { /^\d+$/ } read_file("filename", chomp => 1);

각 줄마다 하나의 숫자가있는 데이터 파일이 있습니다.

10
20
30
40

이 파일을 읽고 배열에 데이터를 저장하려면 어떻게해야합니까?

그래서이 배열에 대해 몇 가지 작업을 수행 할 수 있습니다.


Tie::File 은 필요한 것입니다.

개요

# This file documents Tie::File version 0.98
use Tie::File;

tie @array, 'Tie::File', 'filename' or die ...;

$array[13] = 'blah';     # line 13 of the file is now 'blah'
print $array[42];        # display line 42 of the file

$n_recs = @array;        # how many records are in the file?
$#array -= 2;            # chop two records off the end


for (@array) {
  s/PERL/Perl/g;         # Replace PERL with Perl everywhere in the file
}

# These are just like regular push, pop, unshift, shift, and splice
# Except that they modify the file in the way you would expect

push @array, new recs...;
my $r1 = pop @array;
unshift @array, new recs...;
my $r2 = shift @array;
@old_recs = splice @array, 3, 7, new recs...;

untie @array;            # all finished

배열에 파일을 읽는 것만으로도 요소 당 하나의 행이됩니다.

open my $handle, '<', $path_to_file;
chomp(my @lines = <$handle>);
close $handle;

이제 파일의 줄은 @lines 배열에 있습니다.


나는 좋아한다.

@data = `cat /var/tmp/somefile`;

그것은 다른 사람들처럼 화려하지는 않지만, 똑같이 작동합니다. 과...

$todays_data = '/var/tmp/somefile' ;
open INFILE, "$todays_data" ; 
@data = <INFILE> ; 
close INFILE ;

건배.





perl