Data-Roundtrip
view release on metacpan or search on metacpan
It returns 1 on success or 0 on failure.
## `write_to_filehandle`
write_to_filehandle($filehandle, $contents) or die
Arguments:
- `$filehandle` : the handle to an already opened file (for writing).
Return value:
- 1 on success or 0 on failure.
It writes content to the specified file handle. Upon return
the file handle is still open.
It returns 1 on success or 0 on failure.
# SCRIPTS
A few scripts have been put together and offer the functionality of this
module to the command line. They are part of this distribution and can
be found in the `script` directory.
These are: `json2json.pl`, `json2yaml.pl`, `yaml2json.pl`,
`json2perl.pl`, `perl2json.pl`, `yaml2perl.pl`
# CAVEATS
I have to apologise here to the authors of [YAML::PP](https://metacpan.org/pod/YAML%3A%3APP)
for defaming them because I clumsily wrote [YAML::PP](https://metacpan.org/pod/YAML%3A%3APP)
when I wanted to write [YAML](https://metacpan.org/pod/YAML).
So, the reality is that [YAML::PP](https://metacpan.org/pod/YAML%3A%3APP) does not have any
problem in handling the edge-case below.
A valid Perl variable may kill [YAML](https://metacpan.org/pod/YAML)'s `Load()` because
of escapes and quotes. For example this:
my $yamlstr = <<'EOS';
---
- 682224
- "\"w": 1
EOS
my $pv = eval { YAML::Load($yamlstr) };
if( $@ ){ die "failed(1): ". $@ }
# it's dead
Strangely, there is no problem for this:
my $yamlstr = <<'EOS';
---
- 682224
- "\"w"
EOS
# this is OK also:
# - \"w: 1
my $pv = eval { YAML::Load($yamlstr) };
if( $@ ){ die "failed(1): ". $@ }
# it's OK! still alive.
I have provided an author-only test (`make deficiencies`) which
tests all three of them on the edge cases. Both [YAML::PP](https://metacpan.org/pod/YAML%3A%3APP)
and [YAML::XS](https://metacpan.org/pod/YAML%3A%3AXS) pass the tests.
This [YAML issue](https://github.com/ingydotnet/yaml-pm/issues/224) is
relevant. Many thanks to CPAN authors [TINITA](https://metacpan.org/author/TINITA)
and [INGY](https://metacpan.org/author/INGY) for their work on this, and
on `YAML*` too.
For now, the plan is to still use [YAML::PP](https://metacpan.org/pod/YAML%3A%3APP) and avoid explicitly requiring
[YAML::XS](https://metacpan.org/pod/YAML%3A%3AXS) until [YAML::Any](https://metacpan.org/pod/YAML%3A%3AAny) is ready.
Be warned that sub `dump2perl()` `eval()`'s
its input. If this comes from the user and
it is not checked then it is considered a security
problem. Subs `dump2json()`, `dump2yaml()`, `dump2dump()`
use `dump2perl()`. The four subs will issue a warning whenever
you call them. Additionally, as from version 0.28, they need
to be explicitly imported like:
use Data::Roundtrip qw/... dump2perl .../
They are no longer part of export tag `:dump` nor `:all`.
If their input comes from the user please check the input
not to contain malicious code which when `eval()`'ed
can create security concerns.
# AUTHOR
Andreas Hadjiprocopis, `<bliako at cpan.org> / <andreashad2 at gmail.com>`
# BUGS
Please report any bugs or feature requests to `bug-data-roundtrip at rt.cpan.org`, or through
the web interface at [https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Roundtrip](https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Roundtrip). I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
# SEE ALSO
- [Convert JSON to Perl and back with unicode](https://perlmonks.org/?node_id=11115241)
- [RFC: Perl<->JSON<->YAML<->Dumper : roundtripping and possibly with unicode](https://perlmonks.org/?node_id=11115280)
# SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Data::Roundtrip
You can also look for information at:
- RT: CPAN's request tracker (report bugs here)
[https://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-Roundtrip](https://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-Roundtrip)
- AnnoCPAN: Annotated CPAN documentation
[http://annocpan.org/dist/Data-Roundtrip](http://annocpan.org/dist/Data-Roundtrip)
- Review this module at PerlMonks
( run in 2.626 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )