Я использую «from=>» и «until=>» при сборе данных из репозитория с помощью OAI-PMH, написанного на Perl. Я попытался позволить пользователю ввести дату начала и окончания с <STDIN>
в формате гггг-мм-дд. Но вместо того, чтобы вернуть мне записи/результаты, компилятор, похоже, игнорирует мой запрос/запрос, по крайней мере, он не дает мне никаких результатов. Я приложил соответствующие части кода ниже. Спасибо за помощь!
#! /usr/bin/perl
use warnings;
use strict;
use Net::OAI::Harvester;
use Time::Piece;
use Time::Seconds;
my $harvester = Net::OAI::Harvester->new(
baseURL => 'https://opus4.XXX/oai'
);
my $weekAgo = localtime() - ONE_WEEK;
$weekAgo = $weekAgo->ymd;
my $monthAgo = localtime() - ONE_MONTH;
$monthAgo = $monthAgo->ymd;
print "Please enter a number \n
1 for last weeks records \n
2 for last months records \n
3 for records from ... until ...\n";
my $input = <STDIN>;
[...]
elsif( $input == 3 ) {
print "enter start date (yyyy-mm-dd): ";
my $from = <STDIN>;
print "Enter final date (yyyy-mm-dd): ";
my $until = <STDIN>;
my $list = $harvester->listRecords(
metadataPrefix => 'oai_dc',
from=>$from,
until=>$until
);
search($list);
}
sub search {
my $list = $_[0];
while ( my $record = $list->next ) {
my $datestamp = $record->header->datestamp;
print "[ time stamp: ",$datestamp," ]","\n";
my $metadata = $record->metadata;
print "Title: ",$metadata->title,"\n";
[...]}
}
О, извините, я хотел удалить глобальную переменную, она пришла из другой попытки ... но теперь я сделал глобальные переменные локальными (см. Отредактированный код выше), и это все еще не работает.
Тогда вы можете воспользоваться советом, который я дал 2 часа назад, и использовать ввод STDIN. Может быть, это поможет.
Я изменю свой ответ.