从txt文件获取perl的值

时间:2014-12-13 20:47:19

标签: perl command-line

我想从文本文件中获取两个值

我的perl代码是

#!/usr/bin/perl
use strict;
use Fcntl qw( :flock :DEFAULT );

exit unless sysopen( PID, '1.pid', O_RDWR | O_CREAT ) && flock( PID, LOCK_EX | LOCK_NB );
print PID "$$\n";

while(-s "1.txt")
{
 sleep 1;
 open(F,"1.txt")||die"12";
 my @arr=<F>;
 close F;
 exit if $#arr==-1;

 my $str=shift(@arr);

 open(F,">1.txt")||die"13";
 print F @arr;
 close F;

 $str=~s/[\n\r]+//g;
 my ($dx,$code)=$str=~/^(\d+):(\w+)$/;
 print"($dx)($code)\n";

}

我的文字文件

00001:3wzhs7t2w5t2
00001:3wzhs7t2w5t3
00001:3wzhs7t2w5t4

我的代码输出

()()

我需要

$dx = 00001
$code = 3wzhs7t2w5t2

1 个答案:

答案 0 :(得分:0)

这是一个逐行读取文件的小片段,每行输出两个变量中的成分。

#!/usr/bin/env perl

open my $fh, '<', 'example.txt';

while (my $line = <$fh>) {
    chomp $line;
    if ($line =~ m/([^:]*):([^:]*)/) {
        my $dx = $1;
        my $code = $2;
    }

}

我希望我没有做任何人的作业;)