1 perl
我刚开始使用Perl,我很困惑何时使用join或split用Linux命令结果填充数组.
我正在从一本书中学习,这带来了这些例子.
例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;
Run Code Online (Sandbox Code Playgroud)
例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;
Run Code Online (Sandbox Code Playgroud)
为什么join在第一个例子和split第二个例子中使用?谢谢.
这段代码
@arrayCmd = join(/\n/, $cmd);
Run Code Online (Sandbox Code Playgroud)
不正确,无法正常工作.作者意图使用split; 通过这种改变,这个例子看起来很有效.
快速解释这些差异,因为这本书显然做得不好:
$combined = join($separator, @items) 将所有项目连接@items在一起,放入$separator每个项目之间,并返回单个组合字符串.
@pieces = split(/regex/, $string) $string在正则表达式匹配的每个位置分开,并返回一个切割字符串数组.(以及正则表达式捕获的任何内容.)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |