![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Perl: Öppna en filehandle men inte få något tillbaka från det | Smiling Dragon | Shell-programmering och Skript | 8 | 08-16-2008 03:40 |
| ls-kommandot för att skriva ut FIFO av innehållet (eller perl) | jerardfjay | Shell-programmering och Skript | 1 | 04-06-2006 03:01 |
| Öppna filer | saarshad001 | UNIX for Dummies Frågor & Svar | 3 | 11-28-2003 12:42 |
| Att öppna filer | AJA | UNIX for Dummies Frågor & Svar | 4 | 11-10-2003 11:25 |
| Öppet Perl | perleo | Shell-programmering och Skript | 2 | 08-26-2002 10:41 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Att öppna filer och kontrollera innehållet i Perl
Hej Alla,
Jag behöver lite expert hjälp med att utföra följande Perl. Jag har ett nummer under men det gör, inte verkar fungera. Kan någon expert ge mig några råd? Nedan visas de krav 1) Öppna flera filer till en array @ filer. Observera att filerna alltid namnges med "slag". Exempel på dessa filnamn är "false1_sorts", "false_sorts", "true1_sorts", "true_sorts" etc 2) Sök efter innehåll "32N6524" i den öppnade filen. Om innehållet finns, lägga filen på en annan samling som @ arr_x. Här filerna att detta material är true1_sorts "," true_sorts " Kod:
#!/usr/bin/perl
@FILES = ( *sorts );
print "@FILES ";
print "\n";
foreach $summary_x ( @FILES ) {
open(FH, '< $summary_x') or die $!;
while( <FH> ) {
chomp;
if ( /32N6524/ ) {
push (@arr_x, $summary_x)
};
close FH;
};
};
print "@arr_x ";
false1_sorts false_sorts true1_sorts true_sorts true1_sorts true_sorts Senast redigerad av Raynon; 08-31-2008 vid 07:39.. |
|
||||
|
Att Glob jokertecken, användning <* sorterar> i stället för * slag som gör något helt annat än vad du vill (du skulle ha sett att den fick tryckas as * viktigaste: slag som är en globbed variabelns namn, inte ett globbed filnamnet.
|
|
||||
|
Hej Era
Jag har lagt på <* sorterar> men detta (print "@ arr_x" uttalande gör, inte få skrivas ut. Kan ni hjälpa till? Kod:
#!/usr/bin/perl
@FILES = ( <*sorts> );
print "@FILES ";
print "\n";
foreach $summary_x ( @FILES ) {
open(FH, '< $summary_x') or die $!;
while( <FH> ) {
chomp;
if ( /32N6524/ ) {
push (@arr_x, $summary_x)
};
close FH;
};
};
print "@arr_x ";
|
|
||||
|
Hej Era
Vad skulle syntax om jag behöver för att matcha ett begrepp som består av flera ord till exempel begreppet "EGET FIILE". Jag försökte använda den under koden men det gick, inte jobba. Kan ni hjälpa till? Kod:
if ( /MY PERSONAL FILE/ ) {
push (@arr_x, $summary_x)
};
Ser ut som om termen Jag vill matchen inte på första raden av innehållet, då det vann, inte vara någon match. Kod:
32N6524 MY PERSONAL FILE Senast redigerad av Raynon; 09-01-2008 vid 10:56.. |
|
||||
|
Du har sluttaggen stag på fel ställe, du stänga filen efter att ha läst en linje från den.
Det bidrar till att se logiken om du konsekvent strecksatsen en nivå djupare efter en öppnande stag och minska indrag till balansdagens stag. Kod:
#!/usr/bin/perl
@FILES = ( <*sorts> );
print "@FILES ";
print "\n";
foreach $summary_x ( @FILES ) {
open(FH, "< $summary_x") or die $!;
while( <FH> ) {
chomp;
if ( /32N6524/ ) {
push (@arr_x, $summary_x);
last;
}
}
close FH;
};
print "@arr_x ";
Den chomp verkar inte vara nödvändigt, men du kanske vill utöka manus till den punkt där du vill att linjerna skall chomped. Matchning på grejer med mellanslag det inte är ett problem. Senast redigerad av era; 09-02-2008 vid 03:13.. Orsak: Anmärkning om Useless Användning av Chomp |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|