?+*在regexp中不跟随任何内容

?+*在regexp中不跟随任何内容,regex,perl,makefile,netcat,Regex,Perl,Makefile,Netcat,我正在尝试在HP-UX上编译netcat-0.7.1,但在执行以下操作时,我总是遇到此错误: ../doc/texi2pod.pl ./netcat.texi netcat.pod /^([^=]+)(?:=(.+))?/: ?+* follows nothing in regexp at ../doc/texi2pod.pl line 48. *** Error exit code 255 我打开了texi2pod.pl并尝试这样放置\Q\E://\Q^[^=]+?:=.+?\E/ 但它不起

我正在尝试在HP-UX上编译netcat-0.7.1,但在执行以下操作时,我总是遇到此错误:

../doc/texi2pod.pl ./netcat.texi netcat.pod
/^([^=]+)(?:=(.+))?/: ?+* follows nothing in regexp at ../doc/texi2pod.pl line 48.
*** Error exit code 255
我打开了texi2pod.pl并尝试这样放置\Q\E://\Q^[^=]+?:=.+?\E/ 但它不起作用。如果有人能帮助我,那就太好了

代码如下:

    ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);  
    die "no flag specified for -D\n" unless $flag ne "";  
    die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
    unless $flag=~ /^[a-zA-ZO-9_-]+$/;
perl-v:

    Version 4.0
    Revision 4.0.1.8
看起来texi2pod.pl是上一次更新于2001年的非常旧的脚本,并且不是用use-strict编写的。这可能会让事情变得不确定。我确信它应该是有效的,所以错误可能在你的设置中的其他地方

但是,这一行似乎旨在通过简单地在第一个等号上拆分来提取标志和值,因此您可以尝试将其替换为以下内容之一:

($flag, $value) = split /=/, $flag, 2;        # either just split with a limit
($flag, $value) = ($flag =~ /^([^=]+)=(.+)/); # or simplify regex
我想问题是最后一个问号,我真的不明白这个问号的目的。事实上,整个第二部分都很奇怪。允许第二次捕获的值为空可能是错误的尝试

ETA:说到这里,请更新您的perl版本。如果文达苏是正确的,它大约有20年的历史了,如果它确实有效,那只是习惯使然

看起来texi2pod.pl是上一次更新于2001年的非常旧的脚本,并且不是用use-strict编写的。这可能会让事情变得不确定。我确信它应该是有效的,所以错误可能在你的设置中的其他地方

但是,这一行似乎旨在通过简单地在第一个等号上拆分来提取标志和值,因此您可以尝试将其替换为以下内容之一:

($flag, $value) = split /=/, $flag, 2;        # either just split with a limit
($flag, $value) = ($flag =~ /^([^=]+)=(.+)/); # or simplify regex
我想问题是最后一个问号,我真的不明白这个问号的目的。事实上,整个第二部分都很奇怪。允许第二次捕获的值为空可能是错误的尝试

ETA:说到这里,请更新您的perl版本。如果Ven'Tatsu是正确的,它大约有20年的历史了,如果它确实有效,那只是习惯使然。

Perl 5将?:模式序列添加到正则表达式中,选择它是因为?在所有以前版本的Perl中都是无效的,因此不会破坏当前正在工作的代码。这也意味着任何使用它的代码都与以前版本的Perl不兼容

很少有现代Perl代码可以与Perl4一起使用。您可能需要升级Perl。这可能需要一组级联升级,如C编译器等

如果您没有与HP达成某种安全更新协议,我会非常关注将这么旧的系统连接到internet。如果您没有将您与旧系统绑定的专有软件,您可能需要升级到更新得多的操作系统。Perl 5将?:模式序列添加到正则表达式中,之所以选择它是因为?在所有以前版本的Perl中都是无效的,因此不会破坏当前正在工作的代码。这也意味着任何使用它的代码都与以前版本的Perl不兼容

很少有现代Perl代码可以与Perl4一起使用。您可能需要升级Perl。这可能需要一组级联升级,如C编译器等


如果您没有与HP达成某种安全更新协议,我会非常关注将这么旧的系统连接到internet。如果您没有将您与旧系统绑定的专有软件,那么升级到更新得多的操作系统可能会很好地为您服务。

首先,您必须更新您的Perl版本。Perl 4.0太过时了,我甚至找不到任何关于它的文档

您可以从第页更新Perl

这个更新将把您从Perl4.0一直移动到五年前发布的Perl5.8.8。Perl5.8.8远非当前版本,但至少它将把您的Perl带入21世纪


带上喷气背包和飞车

首先,您必须更新您的Perl版本。Perl 4.0太过时了,我甚至找不到任何关于它的文档

您可以从第页更新Perl

这个更新将把您从Perl4.0一直移动到五年前发布的Perl5.8.8。Perl5.8.8远非当前版本,但至少它将把您的Perl带入21世纪


带上喷气背包和飞车

切勿在注释中添加代码,请使用上面的编辑按钮。最后一个die语句不完整。第一个是噩梦,无论是谁写的都应该被烧掉。它表示die if not$标志不等于空字符串。谁写的那样?尤达?如果$flag eq,我相信是等价的。你能用运行perl-v的结果更新你的问题吗?我很怀疑这个问题是什么,这可以证实这一点。在你的perl版本发布后发生的事情:比尔·克林顿成为美国总统。世界贸易中心的第一次失败轰炸。微软发布了Windows 3.11。@Q\u C好的,你的软件是神秘的吗。它是在比尔·克林顿称互联网为信息高速公路时发布的。更新它

现在,你们这些白痴。你可以跳过最后一部分,因为你是实习生。永远不要在评论中添加代码,使用上面的编辑按钮。最后一条语句是不完整的。第一个是噩梦,无论是谁写的都应该被烧掉。它表示die if not$标志不等于空字符串。谁写的那样?尤达?如果$flag eq,我相信是等价的。你能用运行perl-v的结果更新你的问题吗?我很怀疑这个问题是什么,这可以证实这一点。在你的perl版本发布后发生的事情:比尔·克林顿成为美国总统。世界贸易中心的第一次失败轰炸。微软发布了Windows 3.11。@Q\u C好的,你的软件是神秘的吗。它是在比尔·克林顿称互联网为信息高速公路时发布的。现在就更新吧,你们这些白痴。你可以跳过最后一部分,因为你是实习生。我在试你的建议。我还怀疑问题来自于这个旧版本。然而,我今天试图更新,但在更新过程中出现了一个错误,所以我在这里问了我的问题,认为我仍然可以使用这个旧东西。@Q_C这真的很令人惊讶。在你的perl版本发布时,我买了我的第一台电脑,它是一台带有4Mb内存和120Mb硬盘的macintosh,还有一台25MHz的CPU IIRC。换句话说,它是旧的…是吗?语法用于Perl 5中引入的扩展。自从在Perl 4中是非法的,以前合法的正则表达式突然得到新的解释,没有向后不兼容的问题特别是指组,但不捕获。所以你可以为了匹配的目的把东西分组,而不需要占用一个捕获组。我正在尝试你的建议。我还怀疑问题来自于这个旧版本。然而,我今天试图更新,但在更新过程中出现了一个错误,所以我在这里问了我的问题,认为我仍然可以使用这个旧东西。@Q_C这真的很令人惊讶。在你的perl版本发布时,我买了我的第一台电脑,它是一台带有4Mb内存和120Mb硬盘的macintosh,还有一台25MHz的CPU IIRC。换句话说,它是旧的…是吗?语法用于Perl 5中引入的扩展。自从在Perl 4中是非法的,以前合法的正则表达式突然得到新的解释,没有向后不兼容的问题特别是指组,但不捕获。因此,您可以出于匹配目的将内容分组,而无需占用捕获组。+1用于识别问题尽管我有怀疑,但没有一个包含20年前的perl版本。是的,谢谢!我想知道为什么它不起作用。我不知道作为一名没有特权的新学员,我是否有可能升级他们的系统。有人告诉我应该开发自己的程序,而不是尝试使用/安装Netcat。这很烦人,因为这需要更多的时间,因为我在网络编程方面没有任何知识…但是,毕竟,我是来学习的…我会支持+1。我认为正则表达式兼容性有问题,但我说不出是什么问题。我花了数小时搜索Perl5.000发行说明或一个告诉我Perl4和早期Perl5之间区别的网页,但我找不到任何区别。我甚至查了互联网档案。当时网络上没有太多内容。+1用于识别问题,尽管我有怀疑,但没有一个包含20年前的perl版本。是的,谢谢!我想知道为什么它不起作用。我不知道作为一名没有特权的新学员,我是否有可能升级他们的系统。有人告诉我应该开发自己的程序,而不是尝试使用/安装Netcat。这很烦人,因为这需要更多的时间,因为我在网络编程方面没有任何知识…但是,毕竟,我是来学习的…我会支持+1。我认为正则表达式兼容性有问题,但我说不出是什么问题。我花了数小时搜索Perl5.000发行说明或一个告诉我Perl4和早期Perl5之间区别的网页,但我找不到任何区别。我甚至查了互联网档案。那时候网上的东西不多。谢谢,我会看看我能在那里做些什么。我会试着和管理员交朋友,送玫瑰,在尤达的帮助下,强迫他升级。谢谢,我会看看我能在那里做些什么。我会尽量和管理员交朋友,送玫瑰,在尤达的帮助下,强迫他升级。