[Perl] récuperer partition principale dans 1 var

Statut
N'est pas ouverte pour d'autres réponses.

tigurius

P'tit Marin
Voilà mon problème... en Perl ... et sous Linux

J'aimerai récupérer la nom de la partition principal (root) et mettre cette info dans une variable.
Tout en utilisant la commande "df"
En gros, je voudrai executer la commande "df" et récupérer ce qu'il y'a à l'écran (terminal) et plus précisement mettre dans une variable le disque "root".
Je pensais mettre dans un premier temps tout l'affichage de la commande "df" dans un @rray et ensuite de faire un "tri" de ce que je veux mais je suis pas sûr que ce soit la meilleure solution ...

genre la variable $disque qui contiendrai par exemple "hda1"

J'espère avoir été clair


EDIT : J'ai trouvé une partie de la réponse seulement j'ai encore un peu de mal avec les expressions régulières .... grrrrr


Code:
#!usr/bin/perl

@liste_disque = `df`;
chomp(@liste_disque);
foreach (@liste_disque) {
	 if (/^*\/$&/) {
			 if (s/^\/dev\/(.*)/$&/) {
						   $solution = $&;
						   }
			    }
	  }

print $solution."\n";
Ca affiche toute la ligne du disque "racine" hors je veux juste son "nom" qui est "hda1"
Me reste plus qu'à l'isoler ...
 
W

whatever42

ex membre
Code:
open(FD, "</etc/mtab") or die("open: $!");
while(<FD>) { @t = split(/ /, $_) if $_ =~ / \/ /; }
print shift @t;
et il y a sûrement moyen de faire plus court

sinon, en Ruby:
Code:
puts open('/etc/mtab','r').select { |l| l =~ / \/ /}.first.split(/ /).first
ou encore, en Bash:
Code:
grep ' / ' /etc/mtab | cut -d' ' -f1
 
1er
OP
tigurius

tigurius

P'tit Marin
Bon... bon ... j'ai du mettre le Perl sur le côté durant ces deux mois de vacances :cool:
Mais me revoilà...
Donc déjà, grand merci à toi whatever42 pour ta réponse !
Aussi non j'ai recommencé ... et pas à partir du fichier 'mtab' mais à partir de la commande 'df' et voilà ce que ça donne :

Code:
@tabl = `df`;
chomp(@tabl);
($racine) = ($tabl[1] =~ /^\/dev\/(....)/);
print "$racine\n";
voilà, bon ça m'affiche ce que je veux, mais bon, je ne sais pas si c'est "valable" au niveau de l'écriture ...


Edit : J'ai encore apporté une petite amélioration... plus pour rigoler qu'autre chose...

Code:
@tabl = `df`;
chomp(@tabl);
$n = 1;
if ($tabl[$n] =~ /\/$/) {
($racine) = ($tabl[1] =~ /^\/dev\/(....)/);
print "$racine\n";
}
 
else {
$n = $n+1;
($racine) = ($tabl[$n] =~ /^\/dev\/(....)/);
print "$racine\n";
}
Voili...voilà ...
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut