2014-10-25 7 views

답변

1

나는 완벽하다고 주장하지 않습니다. 신뢰할 수 있음. 새로운 시스템마다 코드가 예상대로 작동하는지 테스트를 만들어야합니다. 당신이 스칼라 기준에 파일 핸들을 열 경우

그러나 readline의 결과는 tainted로 나타납니다

#!/usr/bin/env perl -T 
use strict; 
use warnings; 

use Scalar::Util qw(tainted); 

my $var = 0.13; 

print tainted($var) ? "Yes, tainted: $var\n" : "Nope, all clean: $var\n"; 

$var = taint_string($var); 

print tainted($var) ? "Yes, tainted: $var\n" : "Nope, all clean: $var\n"; 

sub taint_string { 
    my $value = shift; 

    warn "Not going to work on references" if ref $value; 

    open my $fh, '<', \$value or die "Can't open: $!"; 
    local $/; # Slurp 
    return <$fh>; 
} 

출력 :

Nope, all clean: 0.13 
Yes, tainted: 0.13 
+0

좋은 슬픔! 영리하고, 오 - 지금까지 왼쪽 필드에서. 감사! – cnd

+0

기꺼이 도와 드리겠습니다. 지금 당장은 작동하는 것처럼 보이지만 Perl의 이후 버전에서도 작동한다는 보장은 없습니다. 따라서 어떤 식 으로든 의존한다면 시스템 사양이 변경 될 경우 원하는 동작을 보장 할 수 있도록 테스트 스크립트를 만들어야합니다. – Miller