{"id":57,"date":"2008-06-29T14:54:24","date_gmt":"2008-06-29T14:54:24","guid":{"rendered":"http:\/\/byteblog.internetallee.de\/?p=57"},"modified":"2008-06-29T14:54:24","modified_gmt":"2008-06-29T14:54:24","slug":"perl-ausprobieren","status":"publish","type":"post","link":"https:\/\/blogs.internetallee.de\/byteblog\/2008\/06\/29\/perl-ausprobieren\/","title":{"rendered":"Perl ausprobieren"},"content":{"rendered":"<p>Immer mal wieder frage ich mich, was ein  einfacher Perl-Ausdruck denn nun wirklich macht. Da kommt der eingebaute  Debugger genau richtig.<\/p>\n<div>\n<p>F\u00fcr einfache Ausdrucke und Versuche ist es nat\u00fcrlich am einfachsten einen Perl-Einzeiler zu benutzen. Also<\/p>\n<pre>perl -e 'print \"Hallo Weltn\"'<\/pre>\n<p>F\u00fcr Ausdrucke, die aber auf Variablen zur Laufzeit angewiesen ist,  kann es recht m\u00fc\u00dfig sein die History der Shell zu nutzen, oder eine  Datei zu \u00f6ffnen und dort\u00a0 zu experimentieren.<\/p>\n<p>Debugger to the rescue<\/p>\n<p>Da bietet sich dann an den Debugger zu benutzen. Aber ich will ja  eigentlich keine Datei entwanzen. Das Programm f\u00fcr den Debugger muss  aber auch gar nicht gross sein. Eine einfache <strong>0<\/strong> tut es da auch. Mit <strong>perl -d -e 0<\/strong> gelangt man mit dem folgenden Ausdruck in seine pers\u00f6nliche Perl Spielwiese:<\/p>\n<pre>user@rechner:~$ perl -d -e 0\nLoading DB routines from perl5db.pl version 1.28\nEditor support available.\n\nEnter h or `h h' for help, or `man perldebug' for more help.\n\nmain::(-e:1):\u00a0\u00a0\u00a0 0\n\u00a0 DB&lt;1&gt; $a=\"hallo\"\n\n\u00a0 DB&lt;2&gt; print \"$a weltn\"\nhallo welt<\/pre>\n<p>Wie man sieht, kann man im Debugger Variablen setzen und auf diese im n\u00e4chsten Ausdruck zugreifen.<\/p>\n<p>Mit dem \u00fcblichen Debugger Befehl <strong>x<\/strong> &#8211; Untersuche  (eXamine) diesen Ausdruck\/diese Variable &#8211; k\u00f6nnen wunderbar auch  geschachtelte Datenstruckturen anschaulich dargestellt werden.<\/p>\n<pre>  DB&lt;3&gt; @a=qw(hallo welt)\n\n  DB&lt;4&gt; x @a\n0  'hallo'\n1  'welt'\n  DB&lt;5&gt; x @a\n0  ARRAY(0x8404d64)\n   0  'hallo'\n   1  'welt'\n  DB&lt;6&gt;\n<\/pre>\n<p>Macht man einen Fehler, so gibt der Debugger eine Fehlermeldung aus und man hat wieder einen neuen Versuch.<\/p>\n<pre>  DB&lt;6&gt; $a[a)\nsyntax error at (eval 11)[\/usr\/share\/perl\/5.8\/perl5db.pl:628] line 2, near \"a)\"\nMissing right curly or square bracket at (eval 11)[\/usr\/share\/perl\/5.8\/perl5db.pl:628] line 4, at end of line\n<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Immer mal wieder frage ich mich, was ein einfacher Perl-Ausdruck denn nun wirklich macht. Da kommt der eingebaute Debugger genau richtig. F\u00fcr einfache Ausdrucke und Versuche ist es nat\u00fcrlich am einfachsten einen Perl-Einzeiler zu benutzen. Also perl -e &#8218;print &#8222;Hallo Weltn&#8220;&#8218; F\u00fcr Ausdrucke, die aber auf Variablen zur Laufzeit angewiesen ist, kann es recht m\u00fc\u00dfig [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12,34,27],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-debugging","tag-perl","tag-sprachen"],"_links":{"self":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":0,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.internetallee.de\/byteblog\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}