如何在perl脚本中利用unix的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";

我正在尝试使用uuidgen(unix的)生成一个唯一的数字。生成的唯一编号应存储在变量中。当我在函数中执行此操作时,我会面临错误

有人能告诉我如何在perl中使用uuidgen脚本吗

    #!/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();