Piszę właśnie program, którego zadaniem jest wyświetlenie określonego zakresu wersetów z określonej księgi utworu. Treść jest zapisana w pliku tekstowym z oddzielaniem ksiąg znakiem GS i wersetów - znakiem RS. Sam program działa całkowicie poprawnie na danych przykładowych. W jaki sposób mógłbym wygenerować na bazie tekstu dostępnego w Internecie właściwy plik ze znakami rozdzielającymi w odpowiednich miejscach?
0
0
Przy wykorzystaniu tego źródła możesz użyć tego skryptu, podając plik tekstowy na standardowe wejście:
#!/usr/bin/perl -w
#*******************************************************************************
use strict;
use warnings;
use utf8;
#===============================================================================
my $prolog = 1;
my $book_prolog = 0;
my $book_title;
my $output = '';
local $/ = "\r\n";
binmode STDIN, ':utf8';
while(<>)
{ chomp;
if( $prolog )
{ $prolog = 0 if /^ISBN /;
next;
}
next if /^\s*$/;
unless( $book_prolog )
{ if( /^Księga (?:pierwsza|druga|trzecia|czwarta|piąta|szósta|siódma|ósma|dziewiąta|dziesiąta|jedenasta|dwunasta)$/ )
{ $book_prolog = 1;
$book_title = 0;
$output =~ s/.$//;
$output .= "\x1d";
next;
}
}else
{ unless( $book_title )
{ $book_title = 1;
next;
}
$book_prolog = 0;
next;
}
last if /^-/;
s/^\s*//;
$output .= "$_\x1e";
}
print substr( $output, 1, length( $output ) - 2 );
#*******************************************************************************
0
overcq napisał(a):
Przy wykorzystaniu tego źródła możesz użyć tego skryptu, podając plik tekstowy na standardowe wejście:
Błąd Perla.
substr outside of string at pt.pl line 39, <> chunk 1.
Use of uninitialized value in print at pt.pl line 39, <> chunk 1.
0
Manna5 napisał(a):
Błąd Perla.
Dziwne, u mnie działa.
0
W n++ to kilka podmian + ewentualna korekta na podstawie zalinkowanego tu pliku.
Nie trzeba pisać skryptu, minuta roboty.