我们的网站使用Perl为人力资源人员提供了一个简单的机制,可以将空缺发布到我们的网站.它是由第三方开发的,但是它们很久以来就被触碰了,遗憾的是我们内部没有任何Perl技能.当营销人员规避他们的内部IT团队时,就会发生这种情况!
我需要对此应用程序进行简单的更改.目前,职位空缺页面上写着"我们目前有以下职位空缺:",无论是否有职位空缺!因此我们想要更改它,以便仅在适当的时间显示此行.
显然,我可以开始学习一点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...
Run Code Online (Sandbox Code Playgroud)
关键是while (my $ref = $sth->fetchrow_hashref()) {
.我想这是在说"我可以从退回的记录集中取出另一个空位......".如果我在此行之前放置我的print语句,它将始终显示; 在这条线之后,每个空缺都会重复.
如何确定是否有一些空缺要显示,而不会过早地移动返回的记录集?
我总是可以在while循环中复制代码,并将它放在if()语句中(在while循环之前),它也包含我的print语句.但我更愿意采用更简单的方法If any records then print "We currently have.." line
.不幸的是,即使这个简单的行,我也没有线索.
看,我告诉你这是一个微不足道的问题,即使考虑到我的错误解释!
TIA
克里斯
Gra*_*row 15
一个非常简单的方法是:
$sth->execute();
my $first = 1;
while (my $ref = $sth->fetchrow_hashref()) {
if( $first ) {
print "We currently have the following vacancies:\n";
$first = 0;
}
my $temp = $template;
...
}
if( $first ) {
print "No vacancies found\n";
}
Run Code Online (Sandbox Code Playgroud)