Ma tanultam meg a perlt:), szóval csak szájbarágósan, lécci.
adott egy string:
$homepath = "\\szerver\megosztas\alkonyvtar\";
ebből hogy nyerem ki a szavakat, elfelejtve a bekszleseket?
ezzel probalkozom:
@tomb = split(/\\/, $homepath);
foreach $valami (@tomb)
{
print $valami;
}
De nemmegyen. Ugye jól érzem, hogy közeledem a megoldáshoz? Mi nem teccik neki? Ugye itt is \\ kell \ helyett?
Ehh szutyok vindóz az UNC-jével eggyütt.
- 1103 megtekintés
Hozzászólások
jól csinálod, kivéve a homepath-ot, ott is kell escapelni a \-t..
$homepath = "szerver\\megosztas\\alkonyvtar\\";
- A hozzászóláshoz be kell jelentkezni
Köszönöm a választ, sajna csak most jutottam újra vissza ehhez a melóhoz.
A baj az, hogy egy file-ből dolgozom, ami LDAP-ből kérdezte le az adatokat, és így nem tudok változtatni a bemenő adat formátumán: az már marad
sambaProfilePath: \\szerver\profiles\akarmi
ebből kivakarom a "sambaProfilePath: " részt, de ugye akkor még mindig nincsenek escape-elve a backslash-ek. Mit tegyek?
- A hozzászóláshoz be kell jelentkezni
Mielőtt feldolgoznád a bemenetet csereld le \ -t \\-re.
sed, perl barmivel
- A hozzászóláshoz be kell jelentkezni
+próbélom
- A hozzászóláshoz be kell jelentkezni
$a="\valami\valami";
$b='\valami\valami';
print $a."\n".$b."\n";
Kimenet:
valamivalami
\valami\valami
- A hozzászóláshoz be kell jelentkezni
Felhívom a figyelmedet, hogy ha így adod meg a stringet:
$homepath = "\\szerver\megosztas\alkonyvtar\";
akkor az " jelek között a \ escapet jelent és kimenti a következő karaktert.
Ilyenkor le sem fut a script, mert a második " jel escapelve van, vagyis nincs bezárva a stringed.
Első körben próbáld így:
$homepath = '\\szerver\megosztas\alkonyvtar\\';
Ha ugyanis így írod:
$homepath = "\\szerver\megosztas\alkonyvtar\\";
Akkor ez lesz az escape után a változóban:
\szervermegosztaslkonyvtar\
Persze ha fileból olvasod be a stringet, akkor mindegy.
Ha csupa ilyen sor van a filedba:
\\szerver\megosztas\alkonyvtar\
\\szerver\megosztas\alkonyvtar1\
\\szerver\megosztas\alkonyvtar2\
Akkor:
open (IF,'bemeneti_file');
@lines=;
close IF;
foreach $homepath (@lines){
@tomb = split(/\\/, $homepath);
# shift @tomb; # Uncommentezd, ha nem akarod, hogy $tomb[0] ures legyen
print "@tomb\n";
}
Csaba
- A hozzászóláshoz be kell jelentkezni