in reply to Re^4: pack() returns an unusable string
in thread pack() returns an unusable string

Just another guess (to tweak GrandFather) because I don't have a Windows system to test on.

#!/usr/bin/perl -l use strict; # https://perlmonks.org/?node_id=11133064 use warnings; my $template = 'd<'; my $nv = 2.4; $nv = 4135; # NOTE errors for this number my $p = pack $template, $nv; use Data::Dump qw(pp); my $s = (pp $p) =~ s/"(.*)"/qq($1)/sr; # tweak for different delimiter print ">$s<\n"; system $^X, '-wle', "use strict; print unpack('H*', $s);";

Replies are listed 'Best First'.
Re^6: pack() returns an unusable string
by syphilis (Archbishop) on May 27, 2021 at 06:06 UTC
    Just another guess ...

    Yes, that works fine on Windows as is:
    C:\_32\pscrpt>perl test4.pl >qq(\0\0\0\0\0'\xB0\@)< 000000000027b040
    But not when I change $template to "D<" and $nv to 2.4:
    C:\_32\pscrpt>perl test4.pl >pack(qq(H*","9a999999999999990040000000000000))< syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
    (I can dig into this later if you're getting tired of it.)

    Cheers,
    Rob

      The Windows command line quoting rules may be so bad that the safest/easiest solution may be to write your generated code to a file and then execute the file.

      That way the double quotes from Data::Dump will not be confused with command line delimiters by the command line processor.