From: Ramon de C Valle Date: 2012-12-12T19:29:12+09:00 Subject: Re: How I can create/extract a variable/hash into the current binding in Ruby? This is a cryptographically signed message in MIME format. --------------ms020501020204010203070806 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, On 12/12/2012 08:23 AM, Jan E. wrote: > Hi, >=20 > I'm no expert on this stuff, but I think it's a problem of the Ruby > interpreter determining variables while it parses the code: >=20 > eval 'x =3D 1' > puts x >=20 > This doesn't work, because the parser doesn't "see" the eval stuff. It > doesn't find an assignment for "x", so it assumes it's a method (which > leads to a NameError). >=20 > If, however, you set "x" to an arbitrary value beforehands, it correctl= y > regognizes "x" as a variable: >=20 > x =3D nil > eval 'x =3D 1' > puts x >=20 > Apart from the technical stuff: I don't find it a good idea to just dum= p > variables into a binding, because it's just too much "magic". It makes = > it hard to keep track of which variable has which value. And I can't=20 > think of any good reason to do that when you're programming=20 > object-oriented. >=20 > Did you get the idea from PHP? Because that language is notorious for=20 > dumping values into all kinds of contexts, which has lead and still=20 > leads to gigantic security problems. For my particular case, I just want to avoid a giant list of assignments for creating local variables within a method while retrieving information from a series of nested FFI Structs. >=20 Thanks, --=20 Ramon de C Valle / Red Hat Product Security Team --------------ms020501020204010203070806 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMSDCC BVIwggQ6oAMCAQICEAqzP+sBemOzul4+4fzvl/kwDQYJKoZIhvcNAQEFBQAwgd0xCzAJBgNV BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlz aWduLmNvbS9ycGEgKGMpMDkxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDE3MDUG A1UEAxMuVmVyaVNpZ24gQ2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0EgLSBHMzAe Fw0xMjA0MjQwMDAwMDBaFw0xMzA0MjQyMzU5NTlaMIIBFTEXMBUGA1UEChMOVmVyaVNpZ24s IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52 ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMp OTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEzMDEGA1UECxMqRGlnaXRhbCBJ RCBDbGFzcyAxIC0gTmV0c2NhcGUgRnVsbCBTZXJ2aWNlMRkwFwYDVQQDFBBSYW1vbiBkZSBD IFZhbGxlMSEwHwYJKoZIhvcNAQkBFhJyY3ZhbGxlQHJlZGhhdC5jb20wggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCtHIDnFV/HlKm9UnSRo6izQmlNfDgekHNzCaDbb91myLVY gYhZ0LGIjZGwQL5/biXWhKNudbn7wVX3w+RLplA3rRzId/pC/uOuw1NBljRwFRPFxPXNvnqz +aZUP+23mYNiFfKqFTNKP73D08k6FxCFwtqNWvKKdBqFA1PAQjs3vIAmn8gk/h21sN9CDn7I wO87OdfRrFPChpyJxCgBTVcfUlEK1xcMjbQSM8nNw15AkgkITDmxEclu3aehXViKEzWAiOmd B6oYN5Jo3Oh58PvjvWQlX07qPlJJ1XKJeZ8CpA4i7iNC7BXtFH15YzDb/Pw8VxqwhiAuyACA SqCFuNp1AgMBAAGjgdIwgc8wCQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcB MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwCwYDVR0PBAQD AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjBQBgNVHR8ESTBHMEWgQ6BBhj9o dHRwOi8vaW5kYzFkaWdpdGFsaWQtZzMtY3JsLnZlcmlzaWduLmNvbS9JbmRDMURpZ2l0YWxJ RC1HMy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAJkX3S0O1NP8uJa6rDOVBnsxGDyq/nMzOroc VVCKrmfsyQ48gcWBqo77QciFnzo04eaMa8uEajGdJwl7z8M0OrNTmNvNeUETE44RhEObHtBo /1+HoVh2sGbxHD82rqwFxyTZOk9A7/mTqbjqwAZF3YkvL4QhKoLAjvLqs7fWjYTIZWMoej5k PCzuHdvVc4pFLwkzjhx04IW5PozTPVnp+Ik2AaCieHn/gAsMYtglHs4OdXmbePxS2vU3Lf3O bfWE8Axgq+dwwYgUtLXR5LaA5FaMutUjcJg0ZrzzAtxyrh8MNeJmdNuHVot3eQgSsvIlo+cT d699EQKDq0uowKmnd9IwggbuMIIF1qADAgECAhBxFWYFSuSRIU3pvET5rNPcMA0GCSqGSIb3 DQEBBQUAMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENs YXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw0w OTA1MDEwMDAwMDBaFw0xOTA0MzAyMzU5NTlaMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO VmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNV BAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA5 MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENs YXNzIDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDtxEffKigdfAZru9chMslsE4/psY1BTjT32gvjavpliCALERPpm+BJ Totv1QHQXw1HkYpaTHQ+P8aRCbtMNJ6NbqGCUWL3aXZYlgevnhQYB09avZ/SMbJUGXNGahlC EewScyGN9dwwzeXZVgoxxTZtKRSXvS3aiUcZiNhLBD3rtjxnHnQAEw3QhtqTZ/gzA64aPGtp ePbALI7hgz93+Zn//p9SWsK0hwrYbKlHwVQpZUM+SsCWH8Gt93evbLEEXr7BtpQtl5AtJ9K7 HumDaoT2xLKuIwZlJqUnWCsHIrRvpmJIGnfy1VAnminTlvso9bokdmLjjFnr+27VQsS+Qcf1 AgMBAAGjggK5MIICtTA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3Nw LnZlcmlzaWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4 RQEHFwEwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAqBggr BgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1UdHwQtMCswKaAn oCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTEtZzMuY3JsMA4GA1UdDwEB/wQEAwIB BjBuBggrBgEFBQcBDARiMGChXqBcMFowWDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRL a7kolgYMu9BSOJsprEsHiyEFGDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dv MS5naWYwLgYDVR0RBCcwJaQjMCExHzAdBgNVBAMTFlByaXZhdGVMYWJlbDQtMjA0OC0xMTgw HQYDVR0OBBYEFHlHYQhB/TgEokvntcz1Q/ZJKxH4MIHxBgNVHSMEgekwgeahgdCkgc0wgcox CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBG b3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMSBQdWJs aWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczghEAi1t1VoRUhQsAz684 SM6xpDANBgkqhkiG9w0BAQUFAAOCAQEAOU3PQZmBtakFtVI46TmEiWzkNKha59hsCUwkGrpZ pIc7cyHxk4HPv2hjWmf+NYUrocNdo0rCOhndMNbMTe/x0oGXylRaQ783i3qOGY0PQ6iM8q9g sxWKs5WcPOCesyeYpDVyF+X8Kl2H04oNwtFFKvjA9KwqkzrVrhJwCOv7O+J37OgrZDV2zbra 4NHLFNZxWJu+1T59ttnoJMUkZkxdkR92sxc+fw3GIYkvsze4of9csm1J3mVSQvsOiNLtSh2/ S+P4zHL6SA5ljknI1viZmDu3lD4xcQaH+mxZUy7X3yvtX2MArBXtA7hVFozGaAPnIqhzC7G8 oNpSWN0KDn/BgjGCBOwwggToAgEBMIHyMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVy aVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsT MlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA5MR4w HAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENsYXNz IDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0gRzMCEAqzP+sBemOzul4+4fzvl/kwCQYF Kw4DAhoFAKCCAs4wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN MTIxMjEyMTAyOTA3WjAjBgkqhkiG9w0BCQQxFgQUeLmqn2u5AHpq361OJTgeUCQ8byIwXwYJ KoZIhvcNAQkPMVIwUDALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCA MA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIIBAwYJKwYBBAGCNxAE MYH1MIHyMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBo dHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA5MR4wHAYDVQQLExVQZXJzb25hIE5v dCBWYWxpZGF0ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENsYXNzIDEgSW5kaXZpZHVhbCBTdWJz Y3JpYmVyIENBIC0gRzMCEAqzP+sBemOzul4+4fzvl/kwggEFBgsqhkiG9w0BCRACCzGB9aCB 8jCB3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6 Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwOTEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFs aWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vic2NyaWJl ciBDQSAtIEczAhAKsz/rAXpjs7pePuH875f5MA0GCSqGSIb3DQEBAQUABIIBAKUtzweBRys0 g9xJuyU6GVPTPSvmTmqU4V/IlhPxyjtYvlLLFqjzildXlZl6rI6pXVhxSLZiJ4Pv2hQZlU47 by6QFGR9Kx110xIeD32tkk5lp/PaMVAB/FMzbDIWSTOvQeG+m2mSuDxXrAfQ08vBoIVzoUgy s3piAagcpXSveL/u7vAo+1npe6wh/JEcZ/N+4+LL8TT+hS/Ah31ErjHa+Ya/8Zrw45LiEE4x 9DQFBvxrrIfevY6E6CCLjOfm4rydkgAA6XkKfl5BbSJ0APAg6w1TDT4TA0by0HnLYIZFVZgl 0bPFw75nNQvuHzLlhr9yFxk0/vduj18W6sqTUpkAJzMAAAAAAAA= --------------ms020501020204010203070806--