In Perl, eval can do similar things, but symbolic references are “better” (I’m fairly sure it’s where PHP got the idea, and the syntax, from.) e.g.
$foo = "bar";
$$foo = "potatoes"; # $$foo = access the variable named in $foo, i.e. $bar
print $bar; # prints potatoes
Reading other responses, it seems like Python’s globals object is not entirely dissimilar, especially if you know how Perl deals with symbolic references under the hood.
But just because you can doesn’t mean you should. If you use strict; in Perl, it will fail to compile most of this nonsense. Use a hash / associative array / dictionary / whatever your language (natural and/or programming) calls them instead.
And I’m pretty sure that even without strict, local variables can’t be accessed at all the symbolic way, which is probably for the best. (NB: local is a subtle thing in Perl. By “local” here, I mean the so-called my variables that aren’t accessible outside their scope. local variables are actually localised globals. Enjoy that thought.)
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programmerhumor@lemmy.ml
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
Posts must be relevant to programming, programmers, or computer science.
No NSFW content.
Jokes must be in good taste. No hate speech, bigotry, etc.
In python, ‘eval()’ is your friend.
/maliciouscompliance
locals()[“x”] = 1
Oh god I hate you so much for this. It’s beautiful that it’s possible but I also want you to know you’re instigating cybercrimes.
Nah, the locals() or globals() object is much better for this.
In Perl,
eval
can do similar things, but symbolic references are “better” (I’m fairly sure it’s where PHP got the idea, and the syntax, from.) e.g.Reading other responses, it seems like Python’s
globals
object is not entirely dissimilar, especially if you know how Perl deals with symbolic references under the hood.But just because you can doesn’t mean you should. If you
use strict;
in Perl, it will fail to compile most of this nonsense. Use a hash / associative array / dictionary / whatever your language (natural and/or programming) calls them instead.And I’m pretty sure that even without
strict
, local variables can’t be accessed at all the symbolic way, which is probably for the best. (NB:local
is a subtle thing in Perl. By “local” here, I mean the so-calledmy
variables that aren’t accessible outside their scope.local
variables are actually localised globals. Enjoy that thought.)In c, nothing and nobody is your friend.
Source: me
++ is your friend
Objectively…
# is your worst enemy despite being a copy of a good language