<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Comparativa_de_llenguatges_de_script._Llegir_un_fitxer</id>
	<title>Comparativa de llenguatges de script. Llegir un fitxer - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Comparativa_de_llenguatges_de_script._Llegir_un_fitxer"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Comparativa_de_llenguatges_de_script._Llegir_un_fitxer&amp;action=history"/>
	<updated>2026-08-30T13:27:56Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Comparativa_de_llenguatges_de_script._Llegir_un_fitxer&amp;diff=257836&amp;oldid=prev</id>
		<title>Joan: /* Perl */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Comparativa_de_llenguatges_de_script._Llegir_un_fitxer&amp;diff=257836&amp;oldid=prev"/>
		<updated>2018-10-02T15:37:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Perl&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
Llegirem el fitxer de text '''ara_mateix.txt'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ara mateix,&lt;br /&gt;
enfilo aquesta agulla amb el fil d'un propòsit que no dic,&lt;br /&gt;
i em poso a apedaçar.&lt;br /&gt;
Cap dels prodigis que anunciaven taumaturgs insignes&lt;br /&gt;
no s'ha complert.&lt;br /&gt;
I els anys passen de pressa,&lt;br /&gt;
de res a poc, i sempre amb vent de cara.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
utilitzant diferents llenguatges de script interpretats. Aquests normalment ens permetrant treballar de forma interactiva amb la consola, o bé executar totes les comandes en bloc cridant a un script que contingui totes les ordres.&lt;br /&gt;
=Bash=&lt;br /&gt;
'''Bash''' ja està instal.lat per defecte en els sistemes Linux.&lt;br /&gt;
Amb Bash podem utilitzar qualsevol de les comandes pròpies del sistema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat ara_mateix.txt &lt;br /&gt;
Ara mateix,&lt;br /&gt;
enfilo aquesta agulla amb el fil d'un propòsit que no dic,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ man cat&lt;br /&gt;
&lt;br /&gt;
CAT(1)                          User Commands                          CAT(1)&lt;br /&gt;
&lt;br /&gt;
NAME&lt;br /&gt;
       cat - concatenate files and print on the standard output&lt;br /&gt;
&lt;br /&gt;
SYNOPSIS&lt;br /&gt;
       cat [OPTION]... [FILE]...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I si volem llegir el fitxer línia a línia, ho podem fer com a mínim d'aquestes tres maneres:&lt;br /&gt;
&lt;br /&gt;
fitxer '''ara_mateix.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash        &lt;br /&gt;
 &lt;br /&gt;
FILENAME=ara_mateix.txt&lt;br /&gt;
while read line        &lt;br /&gt;
do        &lt;br /&gt;
    echo $line&lt;br /&gt;
done &amp;lt; $FILENAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Donem permisos d'execució i executem el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo chmod a+x ara_mateix.sh&lt;br /&gt;
$ ./ara_mateix.sh &lt;br /&gt;
Ara mateix,&lt;br /&gt;
enfilo aquesta agulla amb el fil d'un propòsit que no dic,&lt;br /&gt;
i em poso a apedaçar.&lt;br /&gt;
Cap dels prodigis que anunciaven taumaturgs insignes&lt;br /&gt;
no s'ha complert.&lt;br /&gt;
I els anys passen de pressa,&lt;br /&gt;
de res a poc, i sempre amb vent de cara.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hi ha altres maneres de fer-ho:&lt;br /&gt;
&lt;br /&gt;
'''ara_mateix2.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash  &lt;br /&gt;
cat ara_mateix.txt | while read a&lt;br /&gt;
do&lt;br /&gt;
echo $a&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''ara_mateix3.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash  &lt;br /&gt;
for a in `cat ara_mateix.txt`&lt;br /&gt;
do&lt;br /&gt;
echo $a&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Python=&lt;br /&gt;
*http://es.wikipedia.org/wiki/Python&lt;br /&gt;
Evidentment, per utilitzar Python has de tenir instal.lat aquest llenguatge (tant per  a Linux com Windows)&lt;br /&gt;
*http://chuwiki.chuidiang.org/index.php?title=Leer_y_escribir_ficheros_en_python&lt;br /&gt;
Per executar comandes '''python''' invoquem al seu intèrpret de comandes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python&lt;br /&gt;
Python 2.7.3 (default, Aug  1 2012, 05:16:07) &lt;br /&gt;
[GCC 4.6.3] on linux2&lt;br /&gt;
Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara ja podem introduir les comandes adequades:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f = open(&amp;quot;ara_mateix.txt&amp;quot;)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f&lt;br /&gt;
&amp;lt;open file 'ara_mateix.txt', mode 'r' at 0xb7323f40&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f.read()&lt;br /&gt;
&amp;quot;Ara mateix,\nenfilo aquesta agulla amb el fil d'un prop\xc3\xb2sit que no dic,\ni em poso a apeda\xc3\xa7ar.\nCap dels prodigis que anunciaven taumaturgs insignes\nno s'ha complert.\nI els anys passen de pressa,\nde res a poc, i sempre amb vent de cara.\n\n&amp;quot;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f.close()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Però és millor utilitzar un script '''Python''' (fitxer amb extensió .py que conté comandes python i executar totes les instruccions de forma desatesa:&lt;br /&gt;
&lt;br /&gt;
fitxer '''ara_mateix.py''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
fitxer = open('ara_mateix.txt','r')&lt;br /&gt;
for linia in fitxer:&lt;br /&gt;
	print linia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python ara_mateix.py &lt;br /&gt;
Ara mateix,&lt;br /&gt;
enfilo aquesta agulla amb el fil d'un propòsit que no dic,&lt;br /&gt;
i em poso a apedaçar.&lt;br /&gt;
Cap dels prodigis que anunciaven taumaturgs insignes&lt;br /&gt;
no s'ha complert.&lt;br /&gt;
I els anys passen de pressa,&lt;br /&gt;
de res a poc, i sempre amb vent de cara.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Perl=&lt;br /&gt;
*http://es.wikipedia.org/wiki/Perl&lt;br /&gt;
'''ara_mateix.pl''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Leer un fichero de texto&lt;br /&gt;
my $filename = 'ara_mateix.txt';&lt;br /&gt;
open INFILE,$filename;&lt;br /&gt;
my $linia;&lt;br /&gt;
while ( $linia = &amp;lt;INFILE&amp;gt;) {&lt;br /&gt;
    chomp($linia); &lt;br /&gt;
    # Incluir aquí debajo el código para procesar la línea&lt;br /&gt;
    print $linia . &amp;quot;\n&amp;quot;;&lt;br /&gt;
} &lt;br /&gt;
close INFILE;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
millor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Leer un fichero de texto&lt;br /&gt;
my $filename = 'ara_mateix.txt';&lt;br /&gt;
open INFILE,$filename;&lt;br /&gt;
my $linia;&lt;br /&gt;
while ( $linia = &amp;lt;INFILE&amp;gt;) {&lt;br /&gt;
    print $linia;&lt;br /&gt;
} &lt;br /&gt;
close INFILE;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ perl ara_mateix.pl&lt;br /&gt;
Ara mateix,&lt;br /&gt;
enfilo aquesta agulla amb el fil d'un propòsit que no dic,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Javascript=&lt;br /&gt;
*http://www-archive.mozilla.org/js/js-file-object.html&lt;br /&gt;
*http://www.html5rocks.com/en/tutorials/file/dndfiles/&lt;br /&gt;
I amb Javascript també ho podem fer això de llegir un fitxer de text? En teoria si... però no és fàcil.&lt;br /&gt;
*https://developer.mozilla.org/en-US/docs/SpiderMonkey/File_object&lt;br /&gt;
Com es comenta en l'enllaç:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Warning: This section describes the File component of the SpiderMonkey JavaScript interpreter. &lt;br /&gt;
File is non-standard, not generally compiled into distributions, is a potential source of &lt;br /&gt;
huge security holes, and not well tested.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Utilitzem el SpiderMonkey com a intèrpret de comandes. També l'utilitzarem en la següent pràctica.&lt;br /&gt;
&lt;br /&gt;
El fitxer que volem testejar és el script '''ara_mateix.js''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var data; &lt;br /&gt;
var file = new File(&amp;quot;/home/joan/M06_WEB/comparar_scripts/ara_mateix.txt&amp;quot;);&lt;br /&gt;
file.open(&amp;quot;read&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
data = file.readln();&lt;br /&gt;
file.close(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i l'executem però no funciona:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/M06_WEC/js-1.8.5/js/src$ ./js /home/joan/M06_WEC/comparar_scripts/ara_mateix.js&lt;br /&gt;
/home/joan/M06_WEC/comparar_scripts/ara_mateix.js:2: ReferenceError: File is not defined&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es queixa de que no troba l'objecte '''File'''. Per tal de què conegui què és un objecte ''File'', tal com es comenta en l'enllaç, hauríem de compilar el SpiderMonkey amb aquesta compatibilitat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ make -f Makefile.ref JS_HAS_FILE_OBJECT=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
però de totes maneres no compila... s'hauria d'estudiar amb més deteniment i trobar una solució que de totes maneres no seria compatible amb totes les plataformes.&lt;br /&gt;
&lt;br /&gt;
'''Nota'''. En entorns Windows possiblement llegir un fitxer de text amb Javascript sigui més fàcil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Set oFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PHP=&lt;br /&gt;
Amb PHP es pot accedir a llegir un fitxer, però estem parlant de fitxers en el cantó del servidor, no del client. En aquest cas utilitzarem el PHP en línia de comandes, que evidentment és la manera no-habitual de treballar amb PHP. Amb això es vol recalcar que PHP és un llenguatge de script que no té perquè estar associat a un servidor web i un navegador web. Els usuaris de Windows hauran d'esbrinar quina possibilitat tenen d'utilitzar PHP en línia de comandes. En cas de què no fos possible o fos complicat, executaran el codi en un entorn web.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install php5-common php5-cli&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// archivo txt&lt;br /&gt;
$filas=file('ara_mateix.txt');&lt;br /&gt;
// iniciamos contador y la fila a cero&lt;br /&gt;
$i=0;&lt;br /&gt;
while($filas[$i]!=NULL){&lt;br /&gt;
	echo $filas[$i];&lt;br /&gt;
	$i++;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I executem el codi en línia de comandes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php ara_mateix.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fixem-nos que no cal tenir instal.lat un servidor web. L'existència del llenguatge PHP és independent de què el servidor web Apache estigui present.&lt;br /&gt;
&lt;br /&gt;
=Altres=&lt;br /&gt;
*VBScript (Windows)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Set oFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*JScript (Windows)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fso;&lt;br /&gt;
fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Actionscript&lt;br /&gt;
És un llenguatge que es va fer popular per fer pel.lícules de Flash incrustades a la web, i que també es pot utlitzar per accedir al ''filesystem''.&lt;br /&gt;
*https://en.wikipedia.org/wiki/ActionScript&lt;br /&gt;
&lt;br /&gt;
*Batch.&lt;br /&gt;
TODO usuaris de Windows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, setembre 2018&lt;br /&gt;
[[Categoria: Institut Jaume Balmes]]&lt;br /&gt;
[[Categoria: Assignatura DAW-M06-WEC]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>