我剛開始使用Perl,我很困惑什麼時候使用join
或split
來填充具有Linux命令結果的陣列。關於在Perl上加入和拆分的困惑
我正在學習一本書,這帶來了這些例子。
實施例1:
$cmd = `host google.com`;
@arrayCmd = join(/\n/, $cmd);
foreach $i (@arrayCmd) {
if ($i =~/has address /) {
$i =~ /.*\s([0-9\.]+)\s.*/;
my $ip = $1;
if ($ip =~ /[0-9\.]+/) {
print "La IP es: " . $ip . "\n";
last;
}
}
}
exit;
實施例2:
$max = 80;
$sisdev = "/dev/sda5";
$comando = `df -k`; # cargamos las líneas del comando a una variable
@lns = split(/\n/, $comando); # separamos cada línea y las colocamos
# como elementos de un array
foreach $linea (@lns) { # por cada $linea del array @lns
if ($linea =~ /$sisdev/) {
$linea =~ /.*\s([0-9]+)\%\s.*/;
$valor = $1; # buscamos la columna y
# extraemos el valor
if ($valor >= $max) { # comparamos el valor
# con el umbral
print "Alarma!: $sisdev en $valor\%. Igual o por encima del umbral de $max\% \n";
}
}
}
exit;
爲什麼使用join
在第一示例和split
在第二示例? 謝謝。
把書扔進垃圾桶。它的標題是什麼? –
你是對的混淆。 'split'使用正則表達式和標量來生成列表,如第一個示例中的,不是'join'。 'join'在標量和列表上運行,併產生一個標量。 – mob