Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BITCOIN_MAGIC (enabled by default) breaks string escaping #4

Open
jes opened this issue Aug 28, 2016 · 1 comment
Open

BITCOIN_MAGIC (enabled by default) breaks string escaping #4

jes opened this issue Aug 28, 2016 · 1 comment

Comments

@jes
Copy link
Contributor

jes commented Aug 28, 2016

The code that is supposed to magically generate Bitcoin::Key and Bitcoin::Address objects from strings breaks quoting. Example:

use strict;
use warnings;

use Bitcoin;

print "hello world\n";

Output is "hello world\n" with "\n" printed as literal characters. The problem is fixed when Bitcoin is loaded with qw(:nomagic).

This is a pretty damning error, magic mode should be disabled by default if it causes this problem.

jes added a commit to jes/libbitcoin-perl that referenced this issue Aug 28, 2016
…literal (grondilu#4)

Previously, magic mode meant qq/"-quoted strings behaved like q/'-quoted strings
because it returned the value of the first argument to the overload function
rather than the second.

From the 'overload' perldoc:

The corresponding values are references to functions which take three arguments:
the first one is the initial string form of the constant, the second one is how
Perl interprets this constant, the third one is how the constant is used. Note
that the initial string form does not contain string delimiters, and has
backslashes in backslash-delimiter combinations stripped (thus the value of
delimiter is not relevant for processing of this string). The return value of
this function is how this constant is going to be interpreted by Perl.
@jes
Copy link
Contributor Author

jes commented Aug 28, 2016

That should fix it without having to disable magic mode by default, however I personally disagree with the "spooky action at a distance" created by the magic mode, and would be in favour of disabling it by default, or even better removing it entirely.

grondilu added a commit that referenced this issue Mar 1, 2021
Magic mode: return Perl's interpretation of the value instead of the literal (#4)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant