如何在perl脚本中利用unix的UUIDGEN
我正在尝试使用uuidgen(unix的)生成一个唯一的数字。生成的唯一编号应存储在变量中。当我在函数中执行此操作时,我会面临错误 有人能告诉我如何在perl中使用uuidgen脚本吗如何在perl脚本中利用unix的UUIDGEN,perl,Perl,我正在尝试使用uuidgen(unix的)生成一个唯一的数字。生成的唯一编号应存储在变量中。当我在函数中执行此操作时,我会面临错误 有人能告诉我如何在perl中使用uuidgen脚本吗 #!/usr/bin/perl sub function_uuidgen { my myuuid; system(`export myuuid=uuidgen`); print "\n unique id is : $myuuid";
#!/usr/bin/perl
sub function_uuidgen
{
my myuuid;
system(`export myuuid=uuidgen`);
print "\n unique id is : $myuuid";
# I need not to export the variable, I just need to unique number generated by UUID GENERATOR in a variable.
}
int main
{
print "\n I am in main function";
&function_uuidgen;
}
我在运行uuidgen时遇到以下错误,如下所述。有人能帮我导出perl中的JAVA变量吗?如果此错误与路径变量相关,则如何导出路径变量
错误:
/bin/java: uuidgen 1: not found
代码:
sub function_uuidgen
{
my $myuuid = qx(uuidgen);
chomp $myuuid;
print "\n unique id is : $myuuid";
# I need to export the variable, as it is giving me error without exporting.
}
int main
{
print "\n I am in main function";
function_uuidgen();
}
你把C和Perl混在一起了。 据我所知,您无法通过perl访问exportet系统变量(如果我错了,请纠正我。我对linux系统变量了解不多) 生成UUID的一种方法是从CPAN生成模块
use strict;
use warnings;
use Data::GUID qw( guid_string );
my $guid = guid_string();
print "$guid\n";
Perl也没有
intmain
函数。您的代码从顶部开始,一直运行到底部。当然,如果您创建一个面向对象的模块,情况会有所不同。不了解uuidgen:您可以
my $perlVar = `uuidgen`;
在perl中。
假设在控制台中调用uuidgen会返回您要查找的号码。如果由于某种原因无法使用Data::GUID,这是使用uuidgen输出的一种方法(请注意背面标记): 示例输出:
$ ./hep.pl
fe82c4f6-a1f2-4242-ab45-853780931927
$
另外,使用&before函数调用在许多年前已经过时:-)
export
是一个shell命令,用于向其环境块添加变量和值。环境块是进程专用的,但(默认情况下)复制到子进程。你似乎认为这是一个全球性的领域——事实并非如此
因此,您所要做的就是为shell的环境块添加一个值,而不是您自己的!(这是由system()
创建的shell,而不是从中运行的shell)。将导出
放在背面标记中是很奇怪的,如果没有错的话
易于使用:
my $myuuid = qx(uuidgen);
chomp $myuuid;
请注意,我使用的是qx
而不是back ticks``因为它们可能会让人混淆(在UNIX shell中也不推荐使用back ticks)
要运行子例程,请松开C样式int main
:
print "\n I am in ", __PACKAGE__, "package\n";
function_uuidgen();
子例程调用的前导
和具有您可能不需要的副作用。添加代码时,请先运行它。您的代码不可运行。+1用于推荐Perl模块,而不是依赖于系统可执行文件。顺便说一下,我喜欢。它不那么流行,但需要较少的依赖项,是一个纯Perl解决方案。@ALL:非常感谢!我想把<代码> `/COD>作为<代码> qx ' >的快捷方式:在导出路径时,我遇到了错误。当我试图在代码中使用uuidgen时,我遇到了下面提到的错误/bin/java:uuidgen 1:未找到
print "\n I am in ", __PACKAGE__, "package\n";
function_uuidgen();