Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 26.01.2014 18:59:02
Ich moechte euch meine neuesten Aliase vorstellen:
Code: Alles auswählen
alias hx='perl -ne'\''printf "%*vX\n"," ","$_"'\'
alias hxr="perl -ne'for(split){print chr hex}'"
Es gibt da dieses "
vector flag". Das muss sich ein Genie ausgedacht haben. Ist so naheliegend! Aber nicht mal Thompson und Ritchie sind draufgekommen.
Code: Alles auswählen
911 0 /tmp $ echo Perl ist das Groeste | hx
50 65 72 6C 20 69 73 74 20 64 61 73 20 47 72 6F 65 73 74 65 A
912 0 /tmp $
912 0 /tmp $ echo Perl ist das Groeste | hx | hxr
Perl ist das Groeste
Ich hatte mir frueher einen Hexer in
C geschrieben.
Jetzt schreibe ich hier einen Hexer in EINER ZEILE
Perl!!
... alles kaum zu glauben
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
wanne
- Moderator
- Beiträge: 7548
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 27.01.2014 00:42:20
IO in C hat immer ein bisschen overhead außerdem hat man eben immer eine Grundliegende Struktur (main()...). Aber wirklich viel groß ist das da auch nicht.
Code: Alles auswählen
#include <stdio.h>
main(){char b,l;lb: l=fread(&b,1,1,stdin);if(l&&printf("%x ",b)) goto lb;}
Das meiste sind da halt die Schlüsselworte,name include,main,stdiom,fread,printf. Aber da geht bestimmt nochmal einiges.
rot: Moderator wanne spricht, default: User wanne spricht.
-
wanne
- Moderator
- Beiträge: 7548
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 27.01.2014 00:59:52
So das schenkt sich fast nichts mehr zu perl und wird vom gcc auch noch gefressen:
Aber nützlich wird C, wenn man eben ein bisschen mehr will und da ein paar Optionen mit einbaut, die dann zb. auch ins 10 System umrechnen. perl ist halt genau auf sowas optimiert. String rein / manipulierter String raus. Und das möglichst schnell.
C will effizient, allmächtig und modularisierbar sein.
Sonst
rot: Moderator wanne spricht, default: User wanne spricht.
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 27.01.2014 01:56:12
Dein
C-Code kann sich sehen lassen!
so laueft er ohne Fehler:
Code: Alles auswählen
int main(){for(unsigned char b;read(0,&b,1);)printf("%x ",b);}
compiler:
Code: Alles auswählen
gcc -include stdio.h -include sys/unistd.h -std=c99 -o hxc hxc.c
Ich komme von
C. Ist mir heute zu aufwendig und umstaendlich. Was habe ich gedocktert an solchen Systemutils!
Heute mit
bash und
Perl und
regex flutscht das wie von selbst.
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
shoening
- Beiträge: 914
- Registriert: 28.01.2005 21:05:59
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von shoening » 27.01.2014 07:21:17
Hi,
fuer hexdumps gibt es doch in
corutils od.
Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.
-
wanne
- Moderator
- Beiträge: 7548
- Registriert: 24.05.2010 12:39:42
Beitrag
von wanne » 27.01.2014 08:59:03
linuxCowboy hat geschrieben:Heute mit
bash und
Perl und
regex flutscht das wie von selbst.
Wie gesagt für jeden Zweck die richtige Sprache. Versuch mal ein Egoshooter oder ein Betriebssystem in perl zu schreiben...
Sonst mein programm compiliert auch. Nimmt man while statt vor sogar ganz ohne optionen. (Bruacht dann aber ein Zeichen länger.) War ja nicht auf sonderlich leserlich ausgelegt.
rot: Moderator wanne spricht, default: User wanne spricht.
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 27.01.2014 10:30:09
Code: Alles auswählen
alias d2h="perl -e 'printf qq|%X\n|, int( shift )'"
alias d2o="perl -e 'printf qq|%o\n|, int( shift )'"
alias d2b="perl -e 'printf qq|%b\n|, int( shift )'"
alias h2d="perl -e 'printf qq|%d\n|, hex( shift )'"
alias h2o="perl -e 'printf qq|%o\n|, hex( shift )'"
alias h2b="perl -e 'printf qq|%b\n|, hex( shift )'"
alias o2h="perl -e 'printf qq|%X\n|, oct( shift )'"
alias o2d="perl -e 'printf qq|%d\n|, oct( shift )'"
alias o2b="perl -e 'printf qq|%b\n|, oct( shift )'"
alias b2d="perl -e 'printf qq|%d\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
alias b2h="perl -e 'printf qq|%X\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
alias b2o="perl -e 'printf qq|%o\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 27.01.2014 16:04:55
shoening hat geschrieben:
fuer hexdumps gibt es doch in
corutils od.
od ist einer der seltenen Faelle, wo ich ein externes Programm den
coreutils vorziehe.
hexdump ist mein Standard-Dumper, und ueber den Softlink
hd aufgerufen ist
-C voreingestellt und man braucht nicht mal einen Alias!
-der_linux_cowboy --- Besser werden! ... f*** w$$
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 27.01.2014 16:41:49
Code: Alles auswählen
perl -E'say substr("0" x 32 . $ARGV[0] , -32)' 101110 # 32bit
00000000000000000000000000101110
finde ich originell!
Da lege ich doch mal nach:
Code: Alles auswählen
perl -e '$i=shift;printf "%d %f 0x%x 0b%b 0%o \n",$i,$i,$i,$i,$i' 12345
12345 12345.000000 0x3039 0b11000000111001 030071
-der_linux_cowboy --- Besser werden! ... f*** w$$