2012-12-20 6 views
1

perl에서 배열 요소의 시작과 끝 부분에 char을 추가하는 쉬운 방법이 있습니까?배열 요소에 char 추가

my @arry = split (/,/,$str)

Ex:my $str ='table1,table2,table3'

나는 출력이 그래서는

감사 SQL 쿼리에서 사용할 수있는

'table1','table2','table3'

과 같아야 좋아한다.

답변

9
join(',', map "'$_'", @arry) 

입니다.

하지만 자리 표시자를 사용하는 것이 훨씬 낫다 : 그래서,

my $str = 'table1,table2,table3'; 
my @arry = split(/,/, $str); 
if (@arry) { 
    my $query = 'select * from tablename where colname in (' . join(',',('?') x @arry) . ')'; 
    my $sth = $dbh->prepare($query); 
    $sth->execute(@arry); 
    ... 
} 
+0

고마워요. 귀하가 제안한대로 자리 표시자를 사용했습니다. – Sourcecode

+0

빈 배열에주의하십시오 ... 불행히도'colname in()'은 유효하지 않습니다 SQL – ysth

3

당신이 당신의 데이터베이스와 함께 작동하도록 DBI (https://metacpan.org/module/DBI)를 사용하려는 경우, 당신은 당신의 쿼리에서 자리 표시자를 사용하는 경우 그것은 당신을 위해 그것을 할 수 있습니다 당신은 가치를 인용 할 필요가 없다. 예를 들어

, 당신이 테이블에 무언가를 삽입 할 경우 : @arry 정확히 3 값을 포함하는 배열입니다

$dbh->do("INSERT INTO table VALUES(?, ?, ?)", undef, @arry) 
     or die $dbh->errstr; 

은 테이블에 삽입합니다.

기타 자세한 내용은 여기를 참조하십시오. https://metacpan.org/module/DBI#Placeholders-and-Bind-Values