그래,이 질문은 당분간 저를 괴롭 혔습니다. 데이터베이스에 연결하고 쿼리의 값을 반환하는 모듈을 실행하고 있습니다. 모듈을 호출하고 모듈의 서브 루틴에서 값을 반환하려고하는 스크립트가 있습니다. 코드는 말보다 더 나은이기 때문에하지만, 여기에 내가 가진 무엇 :모듈 perl에서 해시를 반환하는 방법
내 모듈의sub selectCustomerName ($code){
connectDB() or die "Failed in subroutine";
#Selects customer name from customer table where code is $code
my $selectName = "SELECT * FROM customers WHERE code = ?";
my $sth = $dbh->prepare($selectName);
$sth->execute($code);
my $hash = $sth->fetchrow_hashref;
$hash->{customer_name} = $name;
return $name;
$sth ->finish();
$dbh->disconnect();
}
, 여기 내 스크립트입니다 : 변수를 장난과 스위칭을 많이에서
#!/usr/bin/perl
require Connect;
use warnings;
my $dbh = Connect::connectDB();
my $results = Connect::selectCustomerName('38d');
print $results;
나는 인쇄에있어 0 및 해시 참조는 있지만 해시의 실제 값은 아닙니다. 어떤 도움이라도 대단히 감사 할 것입니다!
[펄 프로토 타입 (http://perldoc.perl.org/perlsub.html#Prototypes) ('하위 selectCustomerName ($ 코드) {')이 아니라 구문 오류,하지만를 지정하는 방법 메소드가 기대하는 인수. 그러나 다른 많은 프로그래밍 언어와 달리 매개 변수는 자동으로 채워지지 않습니다. 예를 들어'shift '를 사용하여 매개 변수를'@ _'에서 꺼내야합니다. – Konerak
빠른 응답을 보내 주셔서 감사합니다. 그래도 인쇄 문제는 계속 발생합니다. 그것은 내 스크립트에서 "인쇄에서 초기화되지 않은 값 사용"을 제공합니다. 그러면 반환되는 것에 문제가 있다고 생각하게됩니다. 어떤 아이디어입니까? –
당신은'$ hash -> {customer_name} = $ name; 대신에'my $ name = $ hash -> {customer_name}'을 사용합니다. – Konerak