Tôi đang xem xét một số trình kích hoạt ClearCase được viết bằng Perl. Tôi đã nhận thấy rằng trong một số biểu thức chính quy, các biến được truyền hoặc là straighforwardly hoặc với tên của chúng trong dấu ngoặc nhọn.
Ví dụ, tôi có dòng mã sau đây trong một trigger:
if ($baseline !~ /^${component}_(|.*_)$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/ &&
$baseline !~ /^${project_root}_$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/)
$component
, $phase
, $automateddigit
, $project_root
là tất cả các biến.
Tại sao một số được chuyển thành $variable
và một số khác được chuyển thành ${variable}
trong cụm từ thông dụng?
Sản phẩm có xuất phát từ cách chúng được khởi tạo không?
Sau đây là các dòng mã initialising họ:
($project = $ENV{CLEARCASE_PROJECT}) =~ s/\@.*$//;
($component = $ENV{CLEARCASE_COMPONENT}) =~ s/\@.*$//;
($project_root, $phase) = ($project =~ /^(.*)_(R\d+.*)$/);
exit(0) if (! $phase);
$phase .= ".0" if ($phase =~ /^R\d+$/);
$automateddigit = '';
$istream = `cleartool desc -fmt "%[istream]p" project:$ENV{CLEARCASE_PROJECT}`;
$componentlist = `cleartool desc -fmt "%[components]Cp" stream:$ENV{CLEARCASE_STREAM}`;
$componentsnbr = split(',', $componentlist);
if ($componentsnbr > 1) {
$automateddigit .= '\\.\\d+';
}
OK, vì vậy tôi nên sử dụng $ {variable} mọi lúc, sau đó. Không? –
Tôi đề nghị chỉ khi cần thiết - bạn nên nhận biết tên của các biến của bạn vì vậy nếu chúng sẽ gây ra xung đột thì hãy làm điều đó. Làm mọi nơi có thể ồn ào –
OK, Cảm ơn! Tôi đã nhận được câu trả lời của mình. :-) –