Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PERL - Datei wird nur jede 2. Zeile ausgelesen bzw. ausgewertet

Empfohlene Antworten

Veröffentlicht

Hi,

ich hab hier ein File (sdb.db). Das File ist folgendermassen aufgebaut.

group=irgendeinegruppe .... <weitere unwichtige infos>

ich will mit diesem script beim start nach dem kriterium gefragt werden, nachdem gesucht werden soll und dann soll er sich per regex gewissen infos ziehen. das funktioniert alles wunderbar... das Problem ist nur, dass es 119 zeilen mit dem anfang "group=" gibt, das script mir aber nur 59 ausgibt...

vergleiche ich nun die 59 treffer des scripts mit dem tatsächlichen 119 in der db, so fällt auf, dass er immer nur jeden 2. Treffer herauszieht. d.h konkret.

angenommen so soeht das file original aus:

group=group1

group=group2

group=group3

group=group4

...

dann sieht das script ergebniss so aus

group=group1

group=group3

...

Hab mir schon gedacht, dass es evtl. Probleme mit dem Carriage Returns oder so gibt, was ich aber glaub ich momentan ausschliessen kann, ich vermute das Problem liegt eher in meinem Skript: Hier das Skript:

#!/usr/bin/perl -w

use utf8;

$basename = "sdb.db";

$i = 0;

print "Bitte geben Sie das zu suchende Kriterium ein: ";

chomp ($criteria = <STDIN>);

open (DATABASE, $basename) || die("Kann $basename nicht oeffnen!\n");

while(<DATABASE>)

{

$content = <DATABASE>;

@content = split(/;/, $content);

if ($content[0] =~ m/^$criteria=/)

{

$i++;

foreach $matchcontent (@content)

{

$matchcontent .= "\n";

}

print "match nummer $i:\n@content\n\n\n";

}

}

close (DATABASE);

open (DATABASE, $basename) || die("Kann $basename nicht oeffnen!\n");

while(<DATABASE>)                      # hier liest du das erste mal

  {

  $content = <DATABASE>;           # hier liest du das zweite mal

  @content = split(/;/, $content);

  if ($content[0] =~ m/^$criteria=/)

  

Ersetze $content = <DATABASE>; einfach durch $content = $_;

du bist ein Gott, Vielen Dank :)

Kannst du mir vielleicht erklären warum das so ist?

Danke

dummabua

habs jetz schon verstanden :)

Danke nochmal

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.