我在文件image1.hd中有一行文字
axial rotation:=0.880157
Run Code Online (Sandbox Code Playgroud)
我想要这个号码.使用核心perl我这样做
open FILE, "<", "$Z_DIR/image1.hd" or die $!;
while (<FILE>){
if (/axial rotation:=(\S+)/)
{
$axial_rot = $1;
}
}
close FILE;
Run Code Online (Sandbox Code Playgroud)
返回所需的输出= 0.880157
我更喜欢一个班轮,因为我会做一些类似于其他一些文件.之前我了解了File :: Slurp模块,我尝试了以下内容,并在断言后面进行了正面观察
my $axial_rot = read_file("$Z_DIR/image1.hd") =~ /(?<=axial rotation:=)\S+/
Run Code Online (Sandbox Code Playgroud)
这将返回1 - 无论正则表达式如何.如何更改后一个正则表达式以实现所需的输出
问题是您在标量上下文中使用赋值,这使匹配返回匹配数.通过切换到列表上下文,您可以使用匹配组来返回所需的子字符串:
my ($axial_rot) = read_file("$Z_DIR/image1.hd") =~ /axial rotation:=(\S+)/;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |