Simple example of using data from a YAML configuration file in a Perl script

后端 未结 3 840
甜味超标
甜味超标 2021-02-06 00:46

I need to create a YAML file to store some configuration data for a Perl script. This seems like it should be really easy but I haven\'t been able to work it out, I think if I h

相关标签:
3条回答
  • 2021-02-06 01:30

    Try dumping out the configuration you want.

    use strict;
    use warnings;
    
    use YAML;
    
    my %settings = (
            foo => 1,
            bar => [qw/one two three/],
    );
    
    print Dump(\%settings);
    

    This prints

    ---
    bar:
      - one
      - two
      - three
    foo: 1
    

    Also, wikipedia has a good overview of YAML if the specification is a bit too dense.

    0 讨论(0)
  • 2021-02-06 01:43

    Your fundamental problem here is that Load expects a string containing YAML, not a filename. You wanted LoadFile instead (which is not exported by default). Also, you should use YAML::XS instead of YAML if you can, as it's a better implementation. (But YAML should be adequate for a simple config file.)

    The other problem is that LoadFile will return a hash reference (well, if your YAML looks like a hash, as yours does), not a list you can use to initialize a hash.

    Try this:

    use strict;
    use warnings;
    use YAML::XS qw(LoadFile);
    
    my $settings = LoadFile('test.yaml');
    
    print "The image width is ", $settings->{image_width};
    

    (You can delete the ::XS if you don't want to (or can't) install YAML::XS. The program will work with no other changes.)

    0 讨论(0)
  • 2021-02-06 01:47

    Try this:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use 5.010;
    
    use YAML qw(LoadFile);
    
    my $settings = LoadFile('test.yaml');
    say "The image width is ", $settings->{image_width};
    

    – Michael

    0 讨论(0)
提交回复
热议问题