Tag: perl

从Java调用“交互式”Perl脚本

我想从Java程序中调用“交互式”Perl脚本。 只是为了清晰起见,反过来(从Perl到Java)对我来说并不好。 该脚本是交互式的,因为它需要与用户进行小型配置对话。 例如,在cmd.exe中调用脚本会导致如下对话框: 要覆盖旧设置吗? [是,否(默认=否)] 并且用户应该在命令行中选择是,否或根本不写。 根据用户的选择,会出现另一条消息:“你想……”,用户会回复等等。我想你已经得到了图片。 我的问题是,当在Java程序中调用脚本时,如何与用户进行相同的对话? 我的意思是,如何将脚本的问题捕获给用户,向用户显示,然后将用户的答案(在Java程序中获取)发送到脚本? 在这种情况下,一个简单的Runtime.getRuntime()。exec()不起作用。 希望我能够表达清楚的问题。 感谢您的帮助!

Perl脚本在终端中运行,但在从Java程序调用时不运行

我正在运行一个Perl脚本,用另一个字符串替换字符串: perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt 当我从终端运行此命令时,它很好地将给定文件中str1所有出现替换为str2 。 当我从java运行它时它确实访问该文件但没有替换发生: Runtime.getRuntime().exec(“perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt”); 我确定它访问该文件(该文件似乎在gedit中编辑(需要重新加载))。 我尝试过Java ProcessBuilder类但是会出现相同的结果。 当我将Runtime.exec()或ProcessBuilder与其他命令(如gedit newFile.txt )一起使用时,它们运行良好。 具有讽刺意味的是,我从java打印了上面的perl命令,并在终端中获取了粘贴,并完成了替换操作! 使用这些命令没有exception或错误。 (我用try和catch来确保这一点)。 我还在cmd中使用/usr/bin/perl而不是perl来确保执行perl cmd。 那么您认为问题是什么? 编辑: 我通过从java中的命令中删除引号来解决这个问题。 感谢@ikegami的帮助。 所以工作版本是: perl -pi.back -es/str1/str2/g; path/to/file1.txt 代替 perl -pi.back -e ‘s/str1/str2/g;’ path/to/file1.txt

java支持if-then-else regexp构造(Perl构造)吗?

尝试编译以下正则表达式时,我收到PatternSyntaxException: “bd”.matches(“(a)?b(?(1)c|d)”) 这个正则表达式匹配bd和abc。 它与bc不匹配。 有任何想法吗? 谢谢。 好吧,我需要写正则表达式来匹配接下来的4个字符串: *date date* date date1*date2 不应该匹配: *date* date1*date2* *date1*date2 date** … 但这应该通过单一匹配来完成,而不是几个。 请不要发布以下答案: (date*date)|(*date)|(date*)|(date)

寻找项目建议。 解析逻辑表达式

我正在为我的学校项目寻找一些建议。 我应该创建一个程序,它采用逻辑表达式并为其输出真值表。 实际上为我创建真值表并不困难,我已经用Java编写了这些方法。 我想知道java中是否有任何类可以用来解析表达式并将其放入堆栈中。 如果不是,我正在寻找解析表达式的帮助。 每当我尝试思考它时,它就是括号。 此外,如果这在任何其他语言中都比较容易,我会愿意这样做。 Perl可能是我的下一个最好的语言。 一些例子(P && Q) – > R. (P || Q || R)&&((P – > R) – > Q)

“\ n”是一个垂直的空格,即“\ v”应该匹配吗?

从逻辑上讲,它是(但无论何时角色编码或区域设置正在运行,逻辑都无关紧要)。 根据 perl -e ‘print “\n” =~ /\v/ ? “y\n” : “n\n”;’ 打印“y”,它是。 根据 Pattern.compile(“\\v”).matcher(“\n”).matches(); 在java中返回false ,它不是。 如果没有这个post声称,这根本不会让我感到困惑 Sun为JDK7更新的Pattern类有一个奇妙的新标志UNICODE_CHARACTER_CLASS,它使一切正常工作。 但是我使用的是java版本“1.7.0_07”并且该标志存在并且似乎根本没有改变。 而且,“\ n”不是Unicode的新手,而是一个普通的旧ASCII字符,所以我真的不知道这种差异是如何发生的。 可能我做了一些愚蠢的事,但我看不到它。

为什么Java和Perl中的正则表达式有不同的表现?

我的理解是Java的正则表达式的实现是基于Perl的。 但是,在下面的示例中,如果我使用相同的字符串执行相同的正则表达式,则Java和Perl会返回不同的结果。 这是Java示例: public class RegexTest { public static void main( String args[] ) { String sentence = “This is a test of regular expressions.”; System.out.println( sentence.matches( “\\w” ) ? “Matches” : “Doesn’t match” ); } } 返回:不匹配 这是Perl的例子: my $sentence = ‘This is a test of regular expressions.’; print ( $sentence =~ /\w/ ? […]

如何从Java调用Perl?

我有一个我想在Java中使用的Perl模块。 有没有办法使用Windows上的ActiveState Perl或Linux附带的通用Perl来调用此代码? 我找到了对JPL的引用,但它似乎不再被维护了。

perl和java正则表达式function有什么区别?

关于支持哪些正则表达式术语,perl和java之间有什么区别? 这个问题仅与正则表达式隔离,并且特别排除了如何使用正则表达式的差异 – 即使用正则表达式的可用函数/方法 – 以及诸如java要求之间的语法差异以逃避反斜杠等。 特别感兴趣的是java对可变长度后视的部分/偶尔支持。

我应该如何在Java中调用Perl脚本?

我读过Runtime.getRuntime().exec(“perl script.pl”)是一个选项,但这是最好的方法吗? 我需要该脚本的答案,所以在某些情况下我必须阅读脚本的返回,尽管我可能会在其他案例中从文本文件中读取它。 无论如何, exec()是从Java调用Perl脚本的好方法吗? 我应该注意,我正在研究Java Web应用程序,因此安全性是一个问题。