Наш веб-сайт использует Perl, чтобы предоставить нашим HR-сотрудникам простой механизм для размещения вакансий на нашем веб-сайте. Он был разработан третьей стороной, но с тех пор их давно связали, и, к сожалению, у нас нет никаких навыков в Perl. Вот что происходит, когда маркетологи обходят внутреннюю ИТ-команду!
Мне нужно внести простые изменения в это приложение. В настоящее время на странице вакансий написано «В настоящее время у нас есть следующие вакансии:», независимо от того, есть ли вакансии! Поэтому мы хотим изменить его, чтобы эта строка отображалась только в соответствующее время.
Я мог бы, очевидно, начать изучать Perl, но мы уже планируем замену сайта, и он, конечно, не будет использовать Perl. Так как решение для тех, кто обладает этими навыками, будет тривиальным, я подумал, что я бы попросил некоторой целевой помощи.
Ниже приводится начало процедуры, в которой перечислены вакансии.
sub list {
require HTTP::Date;
import HTTP::Date;
my $date = [split /\s+/, HTTP::Date::time2iso(time())]->[0];
my $dbh = DBI->connect($dsn, $user, $password)
|| die "cannot connect to $database: $!\n";
my $sql = <<EOSQL;
SELECT * FROM $table where expiry >= '$date' order by expiry
EOSQL
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
my $temp = $template;
$temp =~ s#__TITLE__#$ref->{'title'}#;
my $job_spec = $ref->{'job_spec'};
...etc...
Строка ключа while (my $ref = $sth->fetchrow_hashref()) {
. Я полагаю, что это говорит «пока я могу снять другую вакансию из возвращенного набора записей ...». Если я помещу свое утверждение печати перед этой строкой, оно всегда будет показано; после этой строки, и это повторялось для каждой вакансии.
Как определить, что некоторые вакансии должны отображаться без преждевременного перемещения по возвращенному набору записей?
Я всегда мог скопировать код в цикле while и поместить его в оператор if () (предшествующий циклу while), который также будет включать мой оператор print. Но я бы предпочел использовать более простой подход If any records then print "We currently have.." line
. К сожалению, я не имею ни малейшего понятия, чтобы закодировать даже эту простую строку.
Понимаете, я говорил вам, что это тривиальная проблема, даже если принять во внимание мое неуклюжее объяснение!
1020 * ТИА *
Chris