3 + windows too
source | link

Perl, 95:

The whole command incantation:

perl -MGD::Simple -e'$i=new GD::Simple;moveTo$i 9,50;string$i "Hello world!";print$i->png'>.png

Because of (reasonable) module defaults, it's 95 characters (or 92 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=newe"$i=new GD'Simple)->moveTo(GD'Simple;moveTo$i 9,50);$i->string(50;string$i 'Hello world!');print$i';print$i->png">.png

i.e. 110105

enter image description here

Perl, 95:

The whole command incantation:

perl -MGD::Simple -e'$i=new GD::Simple;moveTo$i 9,50;string$i "Hello world!";print$i->png'>.png

Because of (reasonable) module defaults, it's 95 characters (or 92 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=new GD'Simple)->moveTo(9,50);$i->string('Hello world!');print$i->png">.png

i.e. 110

enter image description here

Perl, 95:

The whole command incantation:

perl -MGD::Simple -e'$i=new GD::Simple;moveTo$i 9,50;string$i "Hello world!";print$i->png'>.png

Because of (reasonable) module defaults, it's 95 characters (or 92 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"$i=new GD'Simple;moveTo$i 9,50;string$i 'Hello world!';print$i->png">.png

i.e. 105

enter image description here

2 slightly shorter :)
source | link

Perl, 10295:

The whole command incantation:

perl -MGD::Simple -e '($i=newe'$i=new GD::Simple)->moveTo(Simple;moveTo$i 9,50);$i->string(q/Hello50;string$i "Hello world!/);print$i";print$i->png'>.png

Because of (reasonable) module defaults, it's 10295 characters (or 9992 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=new GD'Simple)->moveTo(9,50);$i->string('Hello world!');print$i->png">.png

i.e. 110

enter image description here

Perl, 102:

The whole command incantation:

perl -MGD::Simple -e '($i=new GD::Simple)->moveTo(9,50);$i->string(q/Hello world!/);print$i->png'>.png

Because of (reasonable) module defaults, it's 102 characters (or 99 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=new GD'Simple)->moveTo(9,50);$i->string('Hello world!');print$i->png">.png

i.e. 110

enter image description here

Perl, 95:

The whole command incantation:

perl -MGD::Simple -e'$i=new GD::Simple;moveTo$i 9,50;string$i "Hello world!";print$i->png'>.png

Because of (reasonable) module defaults, it's 95 characters (or 92 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=new GD'Simple)->moveTo(9,50);$i->string('Hello world!');print$i->png">.png

i.e. 110

enter image description here

1
source | link

Perl, 102:

The whole command incantation:

perl -MGD::Simple -e '($i=new GD::Simple)->moveTo(9,50);$i->string(q/Hello world!/);print$i->png'>.png

Because of (reasonable) module defaults, it's 102 characters (or 99 if single letter file name allowed).

On Windows we need to binmode STDOUT, the shortest way I think can be -M-encoding+ get rid of double colons:

perl -MGD'Simple -M-encoding -e"($i=new GD'Simple)->moveTo(9,50);$i->string('Hello world!');print$i->png">.png

i.e. 110

enter image description here