проблема в создании записей файла с помощью Perl - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь поместить файл в записи с номерами, начиная с записи от 0 до n, и сохранить его в выходной файл. мой файл начинается с AA до //, и есть несколько AA, и // поэтому я помещаю номер записи для каждого AA в //, поскольку существует от 2000 до 3000 AA, поэтому я хочу поместить их в записи с номером. Может кто-нибудь, пожалуйста, помогите мне.

//

AA r00001

чай ФА

ОС fskjkterjykjlt

//

AA T00002

FA ACE2

ОС кофе

SQ MDNVVDPWYINPSGFAKDTQDEEYVQHHDNVNPTIPPPDNYILNNENDDGLDNLLGMDYY

//

AA T00003

FA Диетический кокс

ОС ewtji34ut893u569

SQ MTSICSSKFQQQHYQLTNSNIFLLQHQHHHQTQQHQLIAPKIPLGTSQLQNMQQSQQSNV

//

AA T00004

FA кокс

ОС jgerjgkhjetkh

SQ MKNNNNTTKSTTMSSSVLSTNETFPTTINSATKIFRYQHIMPAPSPLIPGGNQNQ

SQ RLRQHIPQSIITDLTKGGGRGPHKKISKVDTLRIAVEYIRSLQDLVDDLNGGSNIGANNA

//

#!/usr/bin/env perl
use strict;
use warnings;

my $ifh;

my $ofh;

my $line;
my $recnum = 0;
my $ifn  = "factor data 1.txt";
my $ofn  = "try.txt";
open ($ifh, "<$ifn") || die "can't open $ifn";
open ($ofh, ">$ofn") or die "can't open $ofn";
my $a = "\/\/ ";

while ($line = <$ifh>)
{
chomp $line ;

    if ($line =~ m/$a\$/)
        {

         print "$ofh $line\n";

         $recnum++;
  }
         else
 {
        print "$ofh $recnum $line\n";
  }
 }
       close ($ifh);
       close ($ofh);

1 Ответ

1 голос
/ 13 июля 2011

Эти типы проблем ввода-вывода записей упрощаются, если вы используете Perl для изменения разделителя записей. Теперь каждая запись становится строкой, а строки легко посчитать.

ПРИМЕЧАНИЕ: я также удалил последнюю //, поэтому мы не считаем пустую запись.

Хорошо ... Я предполагаю, что вы можете захотеть что-то вроде этого

#! /usr/bin/env perl

 use strict;
 use warnings;

 my $cntr = 0;

 print "Starting\n";

 # change record seperator
 $/ = '//';

 while ((<DATA>))
 {
   print"============== Record number $cntr ======================\n";
   print "$_\n";
   print "========================================================\n";

   $cntr++;  
 }

 exit 0;


 __DATA__

 /

 AA r00001

 FA tea

 OS fskjkterjykjlt

 //

 AA T00002

 FA ACE2

 OS coffee

 SQ MDNVVDPWYINPSGFAKDTQDEEYVQHHDNVNPTIPPPDNYILNNENDDGLDNLLGMDYY

 //

 AA T00003

 FA Diet coke

 OS ewtji34ut893u569

 SQ MTSICSSKFQQQHYQLTNSNIFLLQHQHHHQTQQHQLIAPKIPLGTSQLQNMQQSQQSNV

 //

 AA T00004

 FA coke

 OS jgerjgkhjetkh

 SQ MKNNNNTTKSTTMSSSVLSTNETFPTTINSATKIFRYQHIMPAPSPLIPGGNQNQ

 SQ RLRQHIPQSIITDLTKGGGRGPHKKISKVDTLRIAVEYIRSLQDLVDDLNGGSNIGANNA

 //

С таким выводом

 Starting
 ============== Record number 0 ======================

 /

 AA r00001

 FA tea

 OS fskjkterjykjlt

 //
 ========================================================
 ============== Record number 1 ======================


 AA T00002

 FA ACE2

 OS coffee

 SQ MDNVVDPWYINPSGFAKDTQDEEYVQHHDNVNPTIPPPDNYILNNENDDGLDNLLGMDYY

 //
 ========================================================
 ============== Record number 2 ======================


 AA T00003

 FA Diet coke

 OS ewtji34ut893u569

 SQ MTSICSSKFQQQHYQLTNSNIFLLQHQHHHQTQQHQLIAPKIPLGTSQLQNMQQSQQSNV

 //
 ========================================================
 ============== Record number 3 ======================


 AA T00004

 FA coke

 OS jgerjgkhjetkh

 SQ MKNNNNTTKSTTMSSSVLSTNETFPTTINSATKIFRYQHIMPAPSPLIPGGNQNQ

 SQ RLRQHIPQSIITDLTKGGGRGPHKKISKVDTLRIAVEYIRSLQDLVDDLNGGSNIGANNA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...