コマンドライン引数を受け取り、-s
その後に検索語を追加できるスクリプトを作成しました。
次に、それを最初の関数に入力し、SQL データベースに接続して用語を検索し、結果を配列で返します。
次に、2 番目の関数を呼び出し、配列を出力し、結果が見つかったかどうかに応じてa-1
または aを出力します。0
最後に、結果が と等しくないかどうかをチェックし、そう0
であれば、結果が見つからなかったことを出力します。
すべてが機能していますが、結果が 2 回印刷されます。理由はありますか?
#!/usr/bin/perl -w
use warnings;
use DBI;
use Getopt::Std;
use strict;
getopt('s:');
our ($opt_s);
my $search = $opt_s;
my @array = function1($search);
&function1($search);
&function2(@array);
if (&function2(@array) != 0) {
print "No results found for '$search'", "\n";
}
sub function1 {
my $search = $_[0];
our $dbh = DBI->connect("dbi:mysql:dbname=database", "root", "password")
or die $DBI::errstr;
my $sql = $dbh->selectall_arrayref(
"SELECT Player from Players_Sport where Sport like '$search'")
or die $DBI::errstr;
my @array = map { $_->[0] } @$sql;
$dbh->disconnect
or warn "Disconnection failed: $DBI::errstr\n";
return @array;
}
sub function2 {
my @array = @_;
my $arrayvalue;
print("\n", "@array", "\n");
if (scalar(@array) == 0) {
$arrayvalue = -1;
}
else {
$arrayvalue = 0;
}
return $arrayvalue;
}