当社の Web サイトでは、Perl を使用して、人事担当者が欠員を Web サイトに掲載するための簡単なメカニズムを提供しています。これはサードパーティによって開発されましたが、彼らは長い間連絡を取り合っていました。悲しいことに、社内に 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...
キーラインはwhile (my $ref = $sth->fetchrow_hashref()) {
. これは、「返されたレコードセットから別の欠員を引き出すことができる間...」と言っていると考えています。この行の前に print ステートメントを配置すると、常に表示されます。この行の後、空席ごとに繰り返されました。
返されたレコードセットを途中で移動せずに、表示する空席があることを確認するにはどうすればよいですか?
while ループ内のコードをいつでもコピーして、(while ループの前にある) if() ステートメント内に配置できます。このステートメントには、print ステートメントも含まれます。しかし、私はより単純なアプローチを好むだけですIf any records then print "We currently have.." line
. 残念ながら、私はこの単純な行でさえコーディングする手がかりがありません。
ほら、私の手探りの説明を考慮しても、それは些細な問題だと言いました!
ティア
クリス