#!/usr/bin/perl -w my $row; do { $row=<> } while $row !~ /^\s*$/; $row=<>; my @headers=map {$_=~/^"(.+)"$/ ? $1:$_} split ',',$row; while( $row=<> ) { my @data=map {$_=~/^"(.+)"$/ ? $1:$_} split ',',$row; printf "%s\n", join ', ', (map {"'".$headers[$_]."' => '".$data[$_]."'"} (0..@data-2)); }
"Navic to reseni v Ruby potrebuje knihovnu, kdezto to perlove si vystaci se zakladnimi jazykovymi konstrukcemi - tim padem odpada potreba knihovnu mit, inicializovat atd."To bude nějaký omyl, to řešení žádnou knihovnu nepoužívá - tedy pokud pomineme skutečnost, že se samo do knihovny dá zabalit. Ragel není knihovna, aby nedošlo k mýlce. :-)
Když chci mít něco rychle hotové, používám VBA či VBS (taková obdoba používání bashe a awk na unixech), na většinu ostatního C#. Pokud je to nutné, dovedu psát třeba v ASM, Perlu a dalších, ale z vlastní vůle tak nečiním
VBA je hodně pěkná technologie - ale není samostatná, je svázána s Microsoft Office - pokud potřebuji dostat data do databáze, tak protlačovat je tam skrz Excel je klasické drbání levou rukou (a bohužel se tak děje dost často). VBS je extrémně prostoduchý a pomalý jazyk - i když zmíněné parsování by se v něm asi zvládlo taky, a hlavně už je opravdu artefakt. Jinak, když v Unixu chcete mít něco rychle hotového, tak právě sáhnete po sedu, awku nebo třeba Pythonu - kdy dokážete s textovými daty poměrně čarovat (pokud víte jak na to). A pokud potřebujete výkon nebo robustnost, tak sáhnete spíše po Yacu. Obě platformy poskytují +/- podobné možnosti, GUI designer, debugger, IDE existují pro Perl, pro Python o Javě nemluvě. Mimochodem pomalost Javy už je naštěstí mýtem - v 6 zapracovali (konečně) a i k mému překvapení aplikace nad Javou 6 jedou srovnatelně s .NETem. Pokud mohu říci svůj názor - řekl bych, že dochází docela k zajímavé konvergenci - pár komerčních balíků komponent existuje jak pro .NET tak pro Javu. Historie o.s. do deseti let skončí. Nikoho moc nebude zajímat co je vespod. Pokud se bude volit mezi o.s. pak na základě politických rozhodnutí a nikoliv na základě technických kritérií, protože ta vzhledem k výkonu hw budou neadekvátní. V blogu Marka Olšavského se můžete dočíst, že k OSS se přiklánějí technicky zdatnější uživatelé, jelikož jim OSS poskytuje větší prostor pro seberealizaci a také nevýhody OSS jsou pro ně minoritní. Ostatní uživatelé budou preferovat uzavřený kód, kdy výhody OSS jsou pro ně nepodstatné (nedokáží je využít) a nevýhody markantní (a takových i mezi vývojáři bude většina). Takže nějaké preference tu budou, nicméně budou subjektivní - nikoliv objektivní. Co se týče přiblížení se IT obci - Linux už své udělal - bez webů a bez internetu by rozhodně počítače nebyly v každé rodině. A to ostatní - mám takový pocit, že nikdo moc neví jak dál - revoluce skončily, teď už se pokračuje evolučně, a přiznám se, že je mi jedno, jestli mám v mobilu Linux nebo Microsoft, pokud mi mobil jede a nezdržuje.
s = "some /relative/path" puts s.gsub(/ \//, ' ') # "some relative/path"tady zadne s.ReplaceAll("/"," ") nepomuze a vlastne ve stejne logice mozna mel postupovat autor clanku - stacilo treba nacist dany soubor do stringu (coz by snad nemel byt problem, tedy podle toho, jak jsou ty soubory velke), pomoci split na prazdnem radku jej rozdelit na dve casti, a tyto dve casti pak jednoduse zpracovat (viz reseni od VM, tusim - ty regexy jsou jednoduche a stejne by vypadaly i v Ruby, vlastne cele reseni by v Ruby bylo dost podobne, i kdyz celkove o dost citelnejsi) vysledkem jsou datove struktury (pole), obsahujici napriklad string " - 1 000 ", ktery se da zpracovat treba takto:
" - 1 000 ".gsub(' ', '').to_itakze fakt jednoduche, a o znalost Perlu ani tak nejde - spis jde o to, aspon trichu umet regularni vyrazy, nic vic, nic min