小编jim*_*mav的帖子

Perl程序可以知道__DATA__开头的行号吗?

有没有办法获取编码__DATA__令牌的行号(可能还有文件名)?或者以其他方式知道原始源文件中从DATA文件句柄读取的一行数据来自的实际行号?

请注意,$.DATA文件句柄读取时从1开始计数。因此,如果将__DATA__令牌的行号添加到了$.它,那将是我正在寻找的东西。

例如:

#!/usr/bin/perl
while (<DATA>) {
  my $n = $. + WHAT??;
  die "Invalid data at line $n\n" if /bad/;
}

__DATA__
something good
something bad
Run Code Online (Sandbox Code Playgroud)

我想说的是“第9行的数据无效”,而不是“第2行”(如果$.它本身被使用,这就是您得到的)。

perl

11
推荐指数
2
解决办法
190
查看次数

Perl (... (*ACCEPT) ...)+ 从不匹配

来自perlre手册页:

如果“(*ACCEPT)”位于捕获组内部,则这些组将在遇到“(*ACCEPT)”的点标记为结束。例如:

  'AB' =~ /(A (A|B(*ACCEPT)|C) D)(E)/x;
Run Code Online (Sandbox Code Playgroud)

将匹配,$1 将是“AB”,$2 将是“B”...

但是,如果第二个捕获组有量词,则模式永远不会匹配:

'AB' =~ /(A (A|B(*ACCEPT)|C)+ D)(E)/x or die "No match";  #dies
                            ^
Run Code Online (Sandbox Code Playgroud)

为什么是这样?将+替换为*或 {0,99} 没有什么区别。 捕获组上包含 的任何(*ACCEPT)量词似乎都会阻止 *ACCEPT 工作。预先感谢您的任何帮助。

regex perl

6
推荐指数
1
解决办法
97
查看次数

Vim - 如何跳转到段落的开头/结尾(在所有情况下都有效)

难道真的没有简单的映射来跳转到段落的第一行或最后一行吗?

{和是“独占”命令,因此如果有一个},它们会跳转到段落之前或之后的空行,否则跳转到段落的实际第一行或最后一行(即,当段落位于段落的顶部或底部时)缓冲)。

这种差异似乎使得不可能以任何直接的方式进行补偿,例如,{w如果前面有空行,则跳转到段落的开头,但对于文件中的第一段则执行错误的操作。

vim paragraph

4
推荐指数
1
解决办法
2065
查看次数

无法将 qml 属性初始化为 {}

property variant a: {} 似乎不起作用。 a最终是未定义的,而不是一个空字典。

我对 Javascript 不太有经验...初始化属性以保存字典的正确方法是什么?

以下 qml 在控制台上打印“qrc:/main.qml:13: TypeError: Type error”。但是,如果a被初始化为,比如说{"dummyentry": 42},那么就会记录预期的结果。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3

ApplicationWindow {
    visible: true; width: 600; height: 200

    property variant a: {}

    Component.onCompleted: {
        console.log("initial a="+JSON.stringify(a)) // TypeError: Type error
        a["newkey"] = 999  // gets "TypeError: Type error"
        console.log("updated a="+JSON.stringify(a))
    }
}
Run Code Online (Sandbox Code Playgroud)

qml

2
推荐指数
1
解决办法
3803
查看次数

标签 统计

perl ×2

paragraph ×1

qml ×1

regex ×1

vim ×1